composer install并发超时需调http.max-parallel参数:v2.2+支持,设1~3可缓解弱网/代理下curl error 28;优先用composer_http_max_parallel环境变量临时覆盖,镜像源切换更治本。

Composer install 时并发下载太多导致超时或失败
默认情况下,Composer 会同时发起最多 5 个 HTTP 下载请求(v2.2+),在弱网、代理环境或私有仓库响应慢时,容易触发 curl error 28 或 Connection timed out。这不是网络问题,而是并发压垮了客户端或服务端连接池。
- 可通过
COMPOSER_PROCESS_TIMEOUT和COMPOSER_NO_INTERACTION配合调优,但治标不治本 - 真正控制并发数的参数是
http.max-parallel,它直接限制 Composer 内部 Guzzle HTTP 客户端的并行请求数 - 该配置只对 Composer v2.2 及以上生效;v2.1 及更早版本不支持,强行设置会被忽略
用 config 命令全局或项目级设置 http.max-parallel
执行命令前确认 Composer 版本:composer --version。若低于 2.2,请先升级:composer self-update。
- 设为 1(最保守):
composer config -g http.max-parallel 1 - 设为 3(平衡选择):
composer config -g http.max-parallel 3 - 仅对当前项目生效(不加
-g):composer config http.max-parallel 2 - 查看当前值:
composer config -g http.max-parallel或composer config http.max-parallel
注意:http.max-parallel 不影响包解压或脚本执行阶段,并发限制仅作用于远程 ZIP/TAR 包下载环节。
临时覆盖并发数:用环境变量绕过配置文件
CI/CD 流水线中常需动态调整,避免污染配置。此时优先级最高的是环境变量:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
COMPOSER_HTTP_MAX_PARALLEL=1 composer installCOMPOSER_HTTP_MAX_PARALLEL=2 composer update- 该变量会覆盖
composer.json和config中的设置,且无需写入任何文件 - 如果同时设了环境变量和 config,以环境变量为准
某些老旧 CI 环境可能禁用环境变量传递,此时需显式写入 composer.json 的 config 段(不推荐长期使用)。
为什么不用 --no-plugins 或 --prefer-dist 来解决?
这两个选项常被误认为能缓解并发问题,实际无效:
-
--no-plugins只跳过插件执行,不影响下载逻辑 -
--prefer-dist是让 Composer 优先选 ZIP 包而非 Git 克隆,但 ZIP 下载本身仍受http.max-parallel控制 - 即使所有包都走 dist,5 个并发仍可能打爆代理或触发速率限制
- 真正起效的只有降低
http.max-parallel或换用镜像源(如阿里云、腾讯云 Composer 镜像)
并发数不是越小越好——设成 1 虽稳定,但总耗时可能翻倍;设成 3~4 在多数企业内网已是安全上限。










