我使用curl时遇到问题,从版本1.28.1到1.37.1 - 出现同样的问题: 在Linux环境中,使用命令行,我同时运行以下命令:
curl -o /dev/null "http://example.com/short_video.mp4" -o /dev/null "http://example.com/short_video.mp4" &
curl -o /dev/null "http://example.com/short_video.mp4" &
curl -o /dev/null "http://example.com/short_video.mp4" &
curl -o /dev/null "http://example.com/short_video.mp4" &
问题是 - 它开始成功下载,但通常,在高速互联网连接上,其中一个下载卡在零速度上,整个过程卡住了.. 唯一有用的是使用速度限制:
curl --speed-limit 5 -o /dev/null "http://example.com/short_video.mp4" &
然后它识别出速度很低并导致下载失败,但我想知道如何首先避免这种情况。
答案 0 :(得分:0)
经过一个小小的研究,似乎有时只对任何一个连接感到高兴,(即使没有使用多个连接) 这似乎是TCP流量控制中的一个错误,因为:愚蠢的窗口综合症: https://en.wikipedia.org/wiki/Silly_window_syndrome
引用:
滑动窗口操作时会出现严重问题 发送应用程序缓慢创建数据,接收 应用程序缓慢消耗数据,或两者兼而有之。如果服务器用 此问题无法处理所有传入的数据,它会请求 它的客户端减少了他们一次发送的数据量(窗口 设置TCP数据包)。如果服务器仍然无法执行 处理所有传入的数据,窗口变得越来越小, 有时甚至到传输的数据小于 数据包标头,使数据传输效率极低。
我注意到很长一段时间(2分钟或更长时间)后再开始下载。