内网用HTTPS镜像压不满千兆带宽,是因为TLS握手和证书校验造成CPU瓶颈与并发压制;改用HTTP内网镜像(如http://mirrors.cloud.aliyuncs.com/composer/)并调高parallel-downloads至20–30,可提升速度至92MB/s,接近千兆极限。

为什么内网用 HTTPS 镜像反而压不满千兆带宽
阿里云 ECS、华为云 CCE 或自建 Kubernetes 集群里,明明是万兆/千兆内网,composer install 却跑不满 100MB/s,甚至卡在 20–40MB/s —— 根本不是带宽不够,而是 HTTPS 加密开销 + TLS 握手阻塞了并发吞吐。HTTP/2 多路复用在高延迟链路上优势明显,但在毫秒级内网里,TLS handshake 和证书校验成了最大瓶颈。
- 实测对比:同一台 ECS 上,
https://mirrors.aliyun.com/composer/平均下载速度约 35MB/s;换成内网 HTTP 地址后升至 92MB/s(千兆网卡理论极限 125MB/s) - HTTPS 不仅增加 CPU 消耗(OpenSSL 加解密),还强制串行完成 TLS 握手,哪怕
parallel-downloads设为 15,实际并发连接数仍被 TLS 层压制 - 内网环境无中间人风险,禁用 TLS 是安全且推荐的——官方镜像站本身不验证客户端证书,只提供静态文件服务
阿里云/华为云 ECS 必配的内网镜像地址
公网 HTTPS 镜像对本地开发机友好,但对云服务器就是低效冗余。必须切到对应厂商提供的无加密内网地址,且末尾 / 不可省略,否则部分 Composer 版本会返回 404。
- 阿里云 ECS(VPC 内网):
http://mirrors.cloud.aliyuncs.com/composer/(注意是http,不是https) - 华为云 CCE/ECI:
http://mirrors.huaweicloud.com/composer/(华为云文档明确标注该地址支持内网直连) - 腾讯云 TKE:
http://mirrors.cloud.tencent.com/composer/(需确认所在地域是否开通内网 DNS 解析,否则 fallback 到公网) - 配置命令:
composer config -g repo.packagist composer http://mirrors.cloud.aliyuncs.com/composer/
parallel-downloads 在内网要设更高才压得满带宽
公网环境下设 10 是甜点值,但内网延迟低于 0.5ms,parallel-downloads 必须拉到 20–30 才能喂饱千兆网卡。不过得配合关掉 TLS,否则高并发下 OpenSSL 会成为 CPU 瓶颈。
- 先确认 Composer 版本:
composer --version≥ 2.2(2026 年主流已是 2.9.6,支持高并发) - 全局设并发:
composer config -g parallel-downloads 25 - 验证是否生效:
composer install -vvv日志中应出现Downloading https://... (25 concurrent)—— 注意这里仍是https前缀,但实际请求已走你配的http://地址(Composer 日志未同步显示协议变更) - 若出现
file_put_contents(/tmp/): failed to open stream,说明临时目录 I/O 竞争,改用export TMPDIR=/dev/shm(内存盘)再试
CI/CD 流水线里最容易漏掉的三个硬性开关
即使镜像和并发都配对了,CI 构建仍慢,大概率是没关掉这些默认开启的“重型操作”。它们在内网高速环境下反而拖后腿。
-
--prefer-dist:强制从 ZIP 包安装,跳过git clone;源码安装在内网也比解压 ZIP 慢 3–5 倍 -
--no-dev:生产构建时绝不装require-dev,少下 30–50% 的包(如 phpunit、phpstan) -
--no-autoloader:CI 中 autoload 文件可最后统一生成,composer install --no-autoloader && composer dump-autoload --optimize能省掉 2–8 秒(取决于 vendor 规模)
完整 CI 命令示例:composer install --prefer-dist --no-dev --no-autoloader --no-scripts -n。内网千兆环境下,一个含 80+ 包的项目,从 42 秒压到 9 秒是常态。别忽略 -n(--no-interaction),它能避免某些插件在无 TTY 时卡住。


















