跳转到主要内容

aria2 速度与 BitTorrent 调优

完整的性能指南:速度究竟来自哪里、真正有效的 HTTP 与 BitTorrent 设置、磁盘与系统调优,以及如何测量和调试慢速下载。从 Raspberry Pi 到 10 Gbps 种子盒都适用。

最后核对 2026-09 · aria2 v1.37.0

开始之前

在 ~/.aria2/aria2.conf、%USERPROFILE%\.aria2\aria2.conf 中修改,或作为 CLI 参数传入。见选项参考。

速度究竟来自哪里

“aria2 很慢”几乎总是四个瓶颈之一。按顺序解决:

  1. 连接数。 aria2 的 HTTP 默认仅有 max-connection-per-server=1。提高它是受限线路上最大的改善。
  2. Peer/Tracker 健康度(BitTorrent)。 Tracker 失效或端口未转发 = 没有 Peer = 0 KB/s。
  3. 磁盘 I/O。 饱和的 HDD 会把快速下载拖成停滞。预分配与磁盘缓存可解决。
  4. 系统上限。 当连接数达到数千时,文件描述符与 TCP 调优就变得关键。

上限不只取决于你:服务器限速、对等互联与线路速率都会限制结果。你只能清除自己这一侧的瓶颈。

HTTP / FTP 调优

HTTP 调优选项(默认值与推荐值)
选项默认推荐效果
max-connection-per-server18–16每个主机的并行套接字 – 最大的杠杆
split58–16文件被切分的分片数
min-split-size20M1M–10M越小,小文件分片越多(开销更大)
max-concurrent-downloads53–8并行文件数;过高会让每个都变慢
max-tries / retry-wait5 / 05 / 3–10不稳定主机的健壮性
timeout / connect-timeout60 / 6030 / 30快速失败并重试,而非挂起
lowest-speed-limit010K–50K丢弃停滞连接,让重试选择更好的
max-overall-download-limit00(或设上限)全局限速;需要共享带宽时设置
积极的 HTTP 参数块(快速且宽容的服务器)
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 失效。

高性能 BitTorrent 参数块
# 发现
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,会向整个文件写入零,可能让大文件下载时整个系统卡顿。按存储选择:

file-allocation 模式
模式原理最适用
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  # 仅对大于此值的文件预分配(可选)

系统与网络调优

# 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"]}'

故障排查与常见问题

有做种者但 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)仍可让写入更平滑并减少磨损。不要设置成超出可支配的内存大小。