resolving dependencies卡住不是timeout能解决的,因composer尚未发起http请求,瓶颈在dns解析或tcp建连阶段,需换dns、绑定hosts或确认镜像源配置。

Resolving dependencies卡住不是timeout能解决的
看到这行输出就停住,说明 Composer 还没发任何 HTTP 请求,连域名解析都没完成。改 http.timeout 或 process-timeout 完全无效。
真实瓶颈在 DNS 解析或 TCP 建连阶段,典型现象包括:dig packagist.org 返回超慢、curl -v https://mirrors.aliyun.com/composer/packages.json 卡在 Resolving host、或者 composer install -vvv 日志里最后停留在 Loading composer repositories 三十秒不动。
这时候调 TCP 窗口大小没用——你连 SYN 都没发出去,更别说滑动窗口了。优先做三件事:
- 运行
dig mirrors.aliyun.com @223.5.5.5测 DNS 响应速度,慢就换系统 DNS - 直接在
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows)绑定镜像 IP,绕过 DNS 查询 - 确认镜像源已生效:
composer config -g repo.packagist输出必须是https://mirrors.aliyun.com/composer/,少个/或写成repos.packagist都静默失效
http.timeout 实际控制的是整个请求生命周期
http.timeout 最终映射为 cURL 的 CURLOPT_TIMEOUT,不是 CURLOPT_CONNECTTIMEOUT。前者管 DNS + TCP + TLS + HTTP body 全流程,后者只管建连阶段。
所以设 http.timeout 是有意义的,但前提是请求已经发出去了。常见错误是:明明卡在 DNS,却反复调高这个值,结果只是让等待时间变长,不解决问题。
实操建议:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局设值:
composer config -g http.timeout 600(单位秒),适合国内弱网 - 临时覆盖优先级最高:
COMPOSER_HTTP_TIMEOUT=600 composer install - 注意 PHP CLI 的
default_socket_timeout会干扰它:如果 ini 中该值是 60,即使你设了 600,底层 socket 也可能在 60 秒被切断
并发下载数影响实际带宽利用率,但和TCP窗口无关
parallel-downloads 控制的是同时发起多少个 dist 包的 HTTP 下载请求,它不调节 TCP 窗口,但决定你能否压满本地带宽。
Composer 2.2+ 默认值是 3,根本不够用;实测 10–15 是多数场景甜点值:
- 阿里云/腾讯云镜像支持 HTTP/2 多路复用,
parallel-downloads=15能跑满千兆宽带 - 华为云镜像建议用 10,避免偶发 503
- 设成 20+ 容易触发
file_put_contents(/tmp/): failed to open stream,尤其在 Docker 或低配 CI 环境 - 已装过
hirak/prestissimo的必须卸载:composer global remove hirak/prestissimo,它在 2.x 中已失效,甚至会静默降级为单线程
TLS 握手失败时调 timeout 是白费力气
如果 -vvv 日志末尾出现 error:14090086 或 SSL routines::ssl handshake failed,说明卡在 TLS 握手阶段,比如企业中间人代理未导入根证书、或镜像站 TLS 版本不兼容。
此时调高 http.timeout 没意义——连接根本建立不了,timeout 还没开始计时。
排查方向:
- 用
openssl s_client -connect mirrors.aliyun.com:443 -servername mirrors.aliyun.com直连测试 TLS 是否通 - 确认系统 CA 证书是否更新:
update-ca-certificates(Linux)或检查 macOS Keychain - 内网环境可临时禁用验证:
COMPOSER_DISABLE_TLS=1,仅限可信网络
真正需要调 TCP 窗口大小的场景极少——Composer 不暴露底层 socket 参数,且现代 Linux 内核已默认启用 window scaling 和 auto-tuning。你遇到的“慢”,99% 是 DNS、TLS、镜像同步延迟或并发不足导致的,不是 TCP 窗口太小。










