Http多范围请求缓慢

时间:2015-12-29 14:40:49

标签: curl httprequest http-range

我在服务器上有8gb文件,我想使用http多范围请求从此文件下载1.5 GB。我用curl。

所有请求均在文件中统一分发,除了第一个请求,包含大500mb范围(总共有161个请求)。

我发现,大范围第一次请求的下载时间约为40秒,总时间约为560秒。这意味着,我下载500mb 40秒,1gb下载520秒。因此,对于均匀分布的请求,我有6倍的减速。我还注意到,当统一分布式请求执行时,下载速率会下降~6-8倍。

我不明白,为什么会这样。每个请求中的范围按偏移量增加排序,因此我不知道为什么我们可以放慢速度。你能解释一下,是什么原因导致这么乱?而且,我如何才能提高这类请求的性能?

如果需要,我可以提供一组请求和时间。

1 个答案:

答案 0 :(得分:1)

您并没有给我们太多的工作,但您可能需要检查/考虑以下几点:

  • 您实际上是在处理多个范围或多个请求的单个请求,每个请求都有一个单独的范围吗?

  • 您确定您的服务器(和脚本,如果它是脚本)实际上支持字节范围请求吗?

  • 您是从静态文件下载,还是由服务器动态生成的内容?如果是后者,请考虑每个请求意味着服务器可能需要重新生成完整文件,然后才发送您感兴趣的部分。

  • 在任何情况下,每个请求在实际下载之前需要花费一点时间来建立(TCP连接,SSL / TLS握手,如果合适,HTTP请求)。如果您使用单独的curl调用或禁用keep-alives

  • ,则尤其如此

多范围请求的原因是什么?你确定下载整个文件不会更快/更简单(并且可能会做一些后处理客户端)吗?

相关问题