aria2 速度与 BitTorrent 调优
完整的性能指南:速度究竟来自哪里、真正有效的 HTTP 与 BitTorrent 设置、磁盘与系统调优,以及如何测量和调试慢速下载。从 Raspberry Pi 到 10 Gbps 种子盒都适用。
最后核对 2026-09 · aria2 v1.37.0
开始之前
- 已安装 aria2 并将其加入
PATH。 - 了解你的存储类型(SSD 还是 HDD)与内存占用 – 它们决定合适的取值。
- 可选:若使用 BitTorrent,需要一个可转发 TCP+UDP 端口的路由器。
在 ~/.aria2/aria2.conf、%USERPROFILE%\.aria2\aria2.conf 中修改,或作为 CLI 参数传入。见选项参考。
速度究竟来自哪里
“aria2 很慢”几乎总是四个瓶颈之一。按顺序解决:
- 连接数。 aria2 的 HTTP 默认仅有
max-connection-per-server=1。提高它是受限线路上最大的改善。 - Peer/Tracker 健康度(BitTorrent)。 Tracker 失效或端口未转发 = 没有 Peer = 0 KB/s。
- 磁盘 I/O。 饱和的 HDD 会把快速下载拖成停滞。预分配与磁盘缓存可解决。
- 系统上限。 当连接数达到数千时,文件描述符与 TCP 调优就变得关键。
上限不只取决于你:服务器限速、对等互联与线路速率都会限制结果。你只能清除自己这一侧的瓶颈。
HTTP / FTP 调优
| 选项 | 默认 | 推荐 | 效果 |
|---|---|---|---|
max-connection-per-server | 1 | 8–16 | 每个主机的并行套接字 – 最大的杠杆 |
split | 5 | 8–16 | 文件被切分的分片数 |
min-split-size | 20M | 1M–10M | 越小,小文件分片越多(开销更大) |
max-concurrent-downloads | 5 | 3–8 | 并行文件数;过高会让每个都变慢 |
max-tries / retry-wait | 5 / 0 | 5 / 3–10 | 不稳定主机的健壮性 |
timeout / connect-timeout | 60 / 60 | 30 / 30 | 快速失败并重试,而非挂起 |
lowest-speed-limit | 0 | 10K–50K | 丢弃停滞连接,让重试选择更好的 |
max-overall-download-limit | 0 | 0(或设上限) | 全局限速;需要共享带宽时设置 |
max-concurrent-downloads=5 max-connection-per-server=16 min-split-size=1M split=16 max-tries=5 retry-wait=5 timeout=30 connect-timeout=30 lowest-speed-limit=10K file-allocation=falloc
若服务器返回 429/403 或断开连接,把 -x/-s 降到 4–8 – 有时“客气”比“激进”更快。
BitTorrent 调优
以下命令准确且安全。0 KB/s 最常见的实际原因其实很简单:没有可达的 Peer:端口未转发,和/或 Tracker 失效。
# 发现 enable-dht=true bt-enable-lpd=true enable-peer-exchange=true listen-port=6888 dht-listen-port=6888 # Swarm 扩展 bt-max-peers=128 bt-request-peer-speed-limit=50K # 丢弃缓慢、停滞的 Peer bt-tracker-connect-timeout=5 bt-tracker-timeout=5 # 做种 seed-ratio=1.0 # 0 = 永久做种 seed-time=0 bt-save-metadata=true follow-torrent=true
在路由器上为 TCP 与 UDP 转发一个端口(上文的 6888),让 Peer 能主动连你 – 否则只能出站连接,速度受限。在 bt-tracker 中保持新鲜的 Tracker 列表;可从Tracker 列表获取。
加密(bt-require-crypto=true)有时能应对 ISP 限速,但会排除部分 Peer – 两种都试试。在私有 Tracker 上,若规则要求则关闭 PEX/DHT。
磁盘与文件系统调优
aria2 在写入前预分配文件。默认是 prealloc,会向整个文件写入零,可能让大文件下载时整个系统卡顿。按存储选择:
| 模式 | 原理 | 最适用 |
|---|---|---|
falloc | 通过 posix_fallocate 预留空间(现代文件系统近乎即时) | ext4、XFS、btrfs、APFS 上的 Linux/macOS – 推荐 |
trunc | 创建文件头并截断到指定大小(稀疏) | 不支持 falloc 的文件系统;快但可能碎片化 |
prealloc | 向整个文件写入零(默认) | 通用回退;对超大文件较慢 |
none | 不预分配;随下载增长 | 闪存/SD,或希望零启动延迟 |
file-allocation=falloc # ext4/XFS/btrfs/APFS disk-cache=64M # 在内存中批量写入(默认 16M) no-file-allocation-limit=64M # 仅对大于此值的文件预分配(可选)
- 按内存选择磁盘缓存: 16–32M(1–2 GB 内存)、64M(4–8 GB – 最佳点)、128M(16 GB+)。
- HDD + 大量连接 是典型停滞场景:提高
disk-cache并使用falloc;考虑加一块小 SSD 作缓存。 - ext4/XFS 与 falloc 配合良好;网络共享(SMB/NFS)可能不行 – 用大文件实测。
系统与网络调优
- 文件描述符: 每文件 16 条连接会迅速累积。启动 aria2 前提高上限:
ulimit -n 65536(Linux)。作为服务则在 systemd 单元中设置LimitNOFILE。 - TCP 拥塞控制: BBR 常能在有丢包的线路上提升吞吐。可用时启用:
sysctl net.ipv4.tcp_congestion_control=bbr。 - 优先有线 + IPv4/IPv6 健康: 若主机 IPv6 异常,设置
disable-ipv6=true以避免缓慢回退。 - 代理: 慢代理会限制一切;分别在有无
--all-proxy时测量。
# Linux:为当前 shell 提高 fd 上限,然后运行 aria2 ulimit -n 65536 aria2c --max-concurrent-downloads=5 --max-connection-per-server=16 URL
交互式硬件优化配置生成器
选择你的硬件,生成适配的 aria2.conf 性能参数块:
生成的参数块只是起点 – 请测量(下一节)后调整。
测量与基准
不要猜 – 要测。两种简单方法:
# 1. aria2 自身每 5 秒输出一次实时汇总
aria2c --summary-interval=5 -x 16 -s 16 https://example.com/large.iso
# 2. 通过 JSON-RPC 查询运行中守护进程的当前速度
curl -s http://127.0.0.1:6800/jsonrpc -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":"1","method":"aria2.getGlobalStat","params":["token:SECRET"]}'
- 使用一台本身不是瓶颈的主机上的大文件(大型发行版镜像或公开测试文件)。
- 一次只改一个变量(先
-x,再-s,再disk-cache)并对比。 - 测试时观察磁盘占用 – 若一直贴 100%,限制就是 I/O 而非网络。
故障排查与常见问题
有做种者但 BitTorrent 仍是 0 KB/s
原因: Tracker 失效/过旧,或没有入站端口。
解决: 从Tracker 列表加入新 Tracker,启用 DHT/LPD,并在路由器上为 listen-port 转发 TCP+UDP。
下载时系统卡死 / 磁盘占用 100%
原因: HDD 上的预分配与大量小写入。
解决: file-allocation=falloc(或 trunc),提高 disk-cache,降低 -x/max-concurrent-downloads。
速度远低于线路带宽
原因: 服务器限速、max-download-limit/max-overall-download-limit 上限,或慢代理。
解决: 检查限制(0 = 不限),提高 -x,并在无代理下测试。
应该用多少连接数?
aria2 将 max-connection-per-server 限制为 16。快速线路从 16 开始,普通宽带用 8,服务器返回 403/429 时用 4。
如何避免 aria2 跑满线路?
设置 max-overall-download-limit=50M 与 max-overall-upload-limit=5M。它们限制所有下载的总量。
在 SSD 上 disk-cache 大小还有意义吗?
不如在 HDD 上明显,但适度的缓存(64M)仍可让写入更平滑并减少磨损。不要设置成超出可支配的内存大小。
相关资源
- aria2.conf 生成器 – 可视化构建完整配置
- 选项参考 – 此处使用的每个参数与示例
- BitTorrent Tracker 列表 – 保持 Swarm 存活
- yt-dlp + aria2 – 加速媒体下载
- 故障排查 – 常见 aria2 错误与具体修复
- .aria2 文件指南 — 断点续传与恢复