You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

curl并行下载任务中途生成空文件,关闭并行则正常,请问是什么原因?

问题可能原因

  • 服务端同会话并发限制:你的请求携带固定PHPSESSID属于同一会话,绝大多数业务服务端都会对单会话/单IP的并发请求数做阈值限制,超过阈值后直接拒绝后续请求。而--parallel-immediate参数会强制curl同时建立所有并行连接而非等待现有连接空闲,会大幅提升触发服务端限流规则的概率,被拒绝的请求没有返回内容就会生成空文件。
  • curl连接缓存配置不足:日志打印的Connection cache is full, closing the oldest one说明curl默认的连接缓存上限不足以支撑你的并行下载任务,频繁主动关闭旧连接的逻辑和服务端的TCP连接回收、Keep-Alive配置不兼容,导致后续请求的TCP连接异常中断,没有实际拉取到内容就生成了空文件。
  • curl版本并行功能缺陷:7.66.0~7.71.0区间的部分curl版本存在并行下载场景下的连接缓存溢出bug,会导致后续请求的套接字分配异常,未实际发送请求就生成空文件。

保留并行能力的修复方案

  • 调整并行参数:将--parallel-max调低到2~3,同时移除--parallel-immediate参数,让curl优先复用空闲连接而非强制新建连接,降低触发服务端限流的概率。
  • 调高连接缓存上限:在命令中添加--maxconnects 100参数,提升curl的连接缓存上限,避免频繁关闭旧连接导致的传输异常。
  • 增加错误重试逻辑:在命令中添加--retry 3 --retry-delay 1 --fail参数,--fail会让curl请求失败时不生成无效空文件,同时自动重试失败的请求。
  • 规避会话限流:如果业务场景允许,可尝试每次请求轮换PHPSESSID,或去掉会话参数走匿名请求,绕过服务端的同会话并发限制。

内容的提问来源于stack exchange,提问作者Datenkralle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:45:02