下载性能

在 设置 → 下载 → 性能 中选择档位。连接数表示上限,实际使用的连接可能更少,取决于文件大小和服务器支持情况。

下载接近完成时,速度有时会明显下降。这通常与剩下的数据已经不够分给多个连接有关。只要已下载大小仍在增加,就可以先让任务继续完成。下面以普通文件下载为例,解释这个过程。

性能档位

档位单文件最大连接数单服务器上限最小分段磁盘缓存
自动16644 MiB32 MiB
均衡161610 MiB32 MiB
高速32324 MiB64 MiB
极限64641 MiB64 MiB
自定义自行设置自行设置自行设置自行设置

自动档位的摘要显示默认值。Motrix 可以根据下载磁盘和文件大小,为每个任务调整连接数和分段大小。磁盘缓存由下载引擎共享,可在引擎启动时自动调整。摘要不代表某个任务实时使用的连接数。

其他预设档位使用表中数值。选择自定义可手动修改。添加任务时单独设置的连接数,可以覆盖该任务使用的档位连接数。

摘要中的数值

  • 最大连接数:一个文件从所有来源并行下载时的连接总数上限。
  • 单服务器上限:一个文件对同一服务器的连接数上限。两个连接上限同时生效。
  • 最小分段:控制下载区间能否继续拆分,不代表每段固定为这个大小。
  • 磁盘缓存:下载数据写入磁盘前使用的内存缓冲,由所有下载任务共享。

这些连接和分段设置适用于普通 HTTP/HTTPS 和 FTP 下载。BitTorrent 使用种子定义的分片和节点设置,见 BT 与磁力链接。

多个连接如何一起下载

常说的“多线程下载”,在这里可以理解为:用多个网络连接,同时下载一个文件的不同部分。

以 HTTP/HTTPS 下载为例,服务器支持分段请求(Range)时,一个连接可以下载文件开头,另一个连接下载中间,其他连接下载后面的部分。收到的数据会写入文件的对应位置。

任务显示的下载速度,是这些连接接收数据的总速度。例如,4 个连接各以 2 MiB/s 下载,合计就是 8 MiB/s。这只是方便理解的例子:实际连接的速度各不相同,也会随网络和服务器状态变化。

如何自动分段

Motrix 通过 aria2 自动拆分下载区间。小于最小分段大小两倍的区间不会继续拆分。设为 1 MiB 时,这个阈值就是 2 MiB。更大的区间能否拆分,还取决于连接上限和服务器是否支持分段下载。

以 500 MiB 的 HTTP/HTTPS 文件为例,设置为最大连接数 64、单服务器上限 64、最小分段 1 MiB:

  • 服务器支持 Range 请求时,最多可以使用 64 个连接并行下载。
  • 如果单服务器上限改为 16,从单一服务器下载时最多使用 16 个连接。
  • 服务器不支持分段下载时,通常只使用 1 个连接。

aria2 会在连接上限内动态分配下载区间。因此,上面的设置最多允许 64 个连接,1 MiB 只参与拆分判断,文件不会被固定切成 500 个独立的小下载任务。

1 MiB = 1,048,576 bytes。即使其他位置的文件大小使用十进制单位,这些设置仍使用二进制单位。

底层规则见 aria2 手册的连接上限和最小分段大小说明。

为什么快下完时会降速

当前引擎采用上面的分段方式,因此在收尾时可能出现这样的过程:

  1. 下载中途,有足够的数据分给多个连接。 各连接同时工作,总速度较高。
  2. 部分区间先下完,能继续分配的工作变少。 空闲连接如果能领到新的区间,就继续下载;如果剩余区间太小、无法再拆分,正在传输数据的连接就会减少。
  3. 最后只剩一小部分,由少数连接完成。 总速度也就取决于这些连接。如果其中一个连接较慢,最后一点数据会显得格外耗时。

连接减少,总速度可能降低

每列方块代表 1 个连接,方块下落表示数据传入。假设每个连接都是 2 MiB/s。

下载中途4 个连接

8 MiB/s

部分区间完成2 个连接

4 MiB/s

最后收尾1 个连接

2 MiB/s

原理示意,非实测数据。剩余连接足够快时,也可能保持满速。

这些阶段没有固定的进度百分比。实际连接数和降速幅度取决于文件、服务器和网络,不会固定按图中的顺序变化。

空闲连接为什么不能都来帮忙

一个连接已经接收了一部分数据后,其他连接要分担,就需要在剩余区间中找到合适的位置,另发请求。当前引擎会受最小分段大小和已分配区间的限制,无法一直把剩余数据细分下去。

例如,最小分段设为 1 MiB 时,不足 2 MiB 的区间不会继续拆分。判断针对的是可以拆分的区间;即使整个文件还剩不少数据,分散在不同位置的小区间也未必能拆给更多连接。

aria2 在满足条件时也会尝试换用更快的请求,但这并不保证最后一段始终跑满带宽。上述收尾过程可以从引擎的区间分配和请求调度规则理解。

Note

这里的“最后一段”指最后没下载完的数据,它也可能在文件中间。降速并没有固定的百分比起点,也不能仅凭接近 100% 就判断任务卡住了。

收尾变慢时怎么办

看到的情况可以怎么做
速度变低,但已下载大小还在增加先继续等待。下载速度是当前每秒收到的数据量;已下载大小更适合用来判断任务是否仍在前进。
已设置 32 或 64 个连接,最后仍很慢连接数只是上限。剩余数据无法再拆分时,继续提高上限通常帮不上忙。
想尝试减轻收尾降速可在自定义中尝试更小的最小分段,让更多区间有机会拆分。代价是可能增加请求和连接开销,也无法保证全程满速。通常先用自动档位即可。
长时间没有新增数据,或反复报错按疑难排解检查任务错误、网络和磁盘状态。必要时尝试暂停后继续;服务器支持断点续传时可接着下载,但重连不保证更快。

如果任务已进入校验、移动文件等阶段,需要等待的是本地文件处理;增加下载连接数对这些步骤没有帮助。短暂收尾降速很常见,长时间停滞则需要结合任务状态排查。

如何选择档位

可以先使用自动。如果服务器拒绝连接或下载不稳定,尝试均衡,或在自定义中降低连接上限。连接越多不一定越快,速度仍受服务器、网络带宽和磁盘影响。需要给其他应用留出带宽时,使用限速。