aria2 是目前 Linux 服务器上最值得信赖的多线程下载工具,其配置核心在于平衡连接数、磁盘缓存与 RPC 安全。 正确配置后,你可以在低配云服务器上获得接近带宽上限的下载速度,同时避免内存溢出和文件碎片化问题,本文基于酷番云多年服务器运维经验,给出可直接落地的配置方案,并针对最常见的坑逐一拆解。
安装与基础配置
安装方式选择
- 使用发行版官方源安装(如
apt install aria2或yum install aria2),不要编译安装,除非你需要修改底层特性。 - 编译安装会引入额外的依赖和编译时间,且无法享受安全更新,酷番云客户实测,官方源版本已完全满足生产下载需求。
最小可用配置
创建配置文件 /etc/aria2/aria2.conf,核心参数如下:
# 基础运行 daemon=true dir=/data/downloads file-allocation=falloc # 连接与速度 max-concurrent-downloads=5 max-connection-per-server=16 split=16 min-split-size=4M max-overall-download-limit=0 max-download-limit=0 # 磁盘与缓存 disk-cache=32M file-allocation=falloc enable-mmap=true # RPC 服务 enable-rpc=true rpc-listen-all=false rpc-listen-port=6800 rpc-secret=你的强密码 rpc-max-request-size=4M # 日志与会话 log=/var/log/aria2.log log-level=warn save-session=/etc/aria2/aria2.session input-file=/etc/aria2/aria2.session save-session-interval=60 continue=true
关键解释:
max-connection-per-server=16是速度的基石,但不要盲目调到 64,很多服务器实际对单 IP 的并发连接数有限制,过高会导致被目标服务器封禁。file-allocation=falloc在 ext4 文件系统上预分配空间,显著降低下载过程中的碎片化,同时避免磁盘写满才发现空间不足。enable-mmap=true能减少内存拷贝,但对内存小于 512M 的机器,建议关闭,否则可能触发 OOM。
RPC 安全配置(最容易忽略的环节)

为什么要重视 RPC
aria2 的 RPC 接口允许完全控制下载行为,如果暴露在公网且无认证,任何人都能向你的服务器推送下载任务,轻则占满带宽,重则被用于下载违法内容,导致服务器被投诉甚至封禁。
正确做法
- 绝对不要设置
rpc-listen-all=true,除非你明确需要远程管理,且已通过防火墙限制来源 IP。 - 推荐绑定内网 IP:
rpc-listen-all=false+rpc-listen-address=127.0.0.1,然后通过 Nginx 反代或 SSH 隧道访问。 - 设置强
rpc-secret,至少 16 位随机字符,并在所有客户端连接时带上 token。 - 在云安全组中,只放行你自己的管理 IP 到 6800 端口,其他全部拒绝。
酷番云经验案例:
我们曾处理过一位客户,其 aria2 使用了默认配置且未设密码,服务器被恶意刷入上千个下载任务,导致带宽耗尽、CPU 100%,最终我们通过酷番云安全组紧急封锁 6800 端口,并协助其迁移到内网 RPC 方案,此后该客户再未出现同类问题。RPC 安全不是可选项,而是必选项。
性能调优与实测参数
针对不同带宽的推荐配置
| 服务器带宽 | 推荐连接数 | 推荐缓存 | 并发任务数 |
|---|---|---|---|
| 1Mbps – 5Mbps | 8 | 16M | 2 |
| 10Mbps – 50Mbps | 16 | 32M | 5 |
| 100Mbps+ | 32 | 64M | 8 |
- 带宽小的服务器,连接数过高反而增加 TCP 开销,速度提升不明显。
- 磁盘缓存设置过大(超过 128M)不会带来额外收益,因为下载瓶颈通常在网络而非磁盘。
使用 continue=true 与会话恢复
- 在下载大文件(如系统镜像)时,意外断线是常态。
continue=true
确保断点续传。
save-session-interval=60每 60 秒保存一次任务列表,配合input-file实现重启后自动恢复未完成任务。
独立见解: 很多教程推荐设置 max-download-limit=0 表示无限速,但在共享带宽的 VPS 上,建议主动限速到带宽上限的 80%,例如带宽 10Mbps,设置 max-overall-download-limit=8M(注意单位是字节/秒,即 1M 约等于 8Mbps),这样可以避免下载任务占满带宽,导致 SSH 无法连接、网站响应缓慢。
常见问题排查清单
下载速度上不去
- 检查是否命中单文件线程上限:
max-connection-per-server是否足够。 - 检查目标服务器是否支持多线程分段下载(部分 HTTP 服务器不支持 Range)。
- 使用
aria2c --conf-path=/etc/aria2/aria2.conf "URL"前台运行,观察日志中的连接状态。
开机自启失败
- 确保配置文件中路径均为绝对路径。
- 检查进程权限:如果以 root 运行,但目录权限不足,也会启动失败。
- 在 systemd 服务文件中加入
Restart=on-failure,并设置User=root(或专用用户)。
RPC 连接被拒绝
- 先在本机测试:
curl -X POST http://127.0.0.1:6800/jsonrpc -d '{"method":"aria2.getVersion"}' - 若本机通、外网不通,则检查安全组和防火墙。
- 若本机也不通,检查 aria2 是否真的在运行,以及是否监听了 6800 端口(
ss -lntp | grep 6800)。
与云产品结合的进阶方案(酷番云独家)
场景:使用酷番云对象存储做离线下载中转
在酷番云服务器上配置 aria2,将下载文件直接输出到挂载的 COS 存储桶目录(通过 rclone mount 或 ossfs),这样可以在服务器上发起下载,完成后文件自动上传到对象存储,不占用服务器本地磁盘,且文件可永久保存。
具体配置要点:

dir=/mnt/cos-downloads(挂载点)- 关闭
file-allocation=falloc,因为网络文件系统不支持该操作,改用file-allocation=none。 - 降低
disk-cache到 8M,避免占满服务器内存。 - 下载完成后,通过
on-download-complete脚本触发对象存储的审计或转码任务。
独立见解: 这种架构非常适合做影视资源采集、学术资料备份,但要注意,对象存储的请求费用,如果下载 1000 个小文件,会产生大量写请求,建议在服务器本地先合并或打包再上传,减少请求次数,降低成本。
相关问答模块
问题 1:aria2 下载时内存占用很高,如何优化?
答:主要原因是 disk-cache 设置过大,或启用了 enable-mmap 导致内核页缓存占用,解决方案:
- 将
disk-cache降低到 16M 或 32M。 - 关闭
enable-mmap=true,改为默认的pread模式。 - 同时降低
max-concurrent-downloads,减少同时进行的下载任务数量。 - 使用
vm.swappiness=10调整内核内存回收策略,避免文件缓存挤压应用内存。
问题 2:aria2 突然停止下载,日志无报错,是什么原因?
答:最常见原因是 save-session 文件写入失败,导致会话恢复异常,检查 /etc/aria2/aria2.session 目录是否有写入权限,另一种可能是目标服务器主动断开连接,且 continue=true 未生效,需要确认配置文件中没有拼写错误,建议在日志级别 debug 下重新运行,查看具体的超时或重置信息。
你在配置 aria2 时遇到过最奇怪的问题是什么?是 BT 下载无速度,还是 RPC 被黑?欢迎在评论区分享你的经历,我会针对你的具体场景给出排查建议,如果本文对你有帮助,请点赞并转发给需要的朋友,让更多服务器管理员避开那些看不见的坑。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/773193.html

