Composer安装包时提示killed 内存不足导致进程被杀修复【解决】
发布时间 - 2026-01-29 00:00:00 点击率:次Composer install 显示“Killed”是 Linux OOM Killer 终止 PHP 进程所致,并非 Composer 报错;可通过 dmesg 查证,临时加 swap 或用 COMPOSER_MEMORY_LIMIT=-1 --no-plugins --no-dev 等降低内存峰值。
为什么 Composer install 会显示 “Killed” 而不是具体错误?
Linux 内核在内存严重不足时,会触发 OOM Killer(Out-Of-Memory Killer),它会选择一个进程强制终止,并输出 Killed —— 这不是 Composer 报错,而是系统行为。你不会看到 PHP 错误或 Composer 异常堆栈,composer install 就突然退出,终端只留一个冰冷的 Killed。
确认是不是 OOM 导致的 Killed
运行 dmesg -O | grep -i "killed process",如果输出类似:
Killed process 12345 (php) total-vm:2845678kB, anon-rss:1234567kB, file-rss:0kB
就基本坐实了。注意看括号里是 php,说明 Composer 启动的 PHP 进程被干掉了。
- 别只看
free -h,swap 可能已耗尽但未启用 - 容器环境(如 Docker)要查宿主机内存,或检查
docker stats中的 memory limit - 某些 VPS(如 DigitalOcean 1GB 基础款)默认无 swap,极易触发 OOM
快速修复:临时加 swap 或限制 Composer 内存占用
不改配置、不删依赖,立刻让 composer install 跑完的组合操作:
- 创建 1GB 临时 swap 文件:
sudo fallocate -l 1G /
swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
- 限制 Composer 使用单线程 + 禁用插件减少内存峰值:
COMPOSER_MEMORY_LIMIT=-1 composer install --no-plugins --no-scripts - 如果项目含大量 dev 依赖(如测试工具、PHPStan),先装生产依赖:
composer install --no-dev
COMPOSER_MEMORY_LIMIT=-1 是告诉 Composer 别自己设内存上限(PHP 默认值可能更宽松),但前提是系统真有可用内存或 swap。
Docker 或 CI 环境下怎么防住?
CI(GitHub Actions、GitLab CI)和 Docker 默认内存极小,且通常禁用 swap。关键动作是:
- Docker 运行时加内存限制宽松些:
docker run --memory=2g --memory-swap=2g ...(避免--memory-swap=0) - GitHub Actions 中避免在
ubuntu-latest上直接跑composer install,改用composer install --no-interaction --optimize-autoloader --no-progress - 在
composer.json的config段加上:"process-timeout": 0, "fxp-asset": {"enabled": false}(后者可省掉 asset plugin 的额外开销)
真正麻烦的是嵌套场景:Docker in Docker(如自建 runner)、低配云函数环境——这时候得提前精简 require-dev,或者把 vendor 构建步骤挪到构建机而非运行时。
# php
# linux
# js
# git
# json
# docker
# composer
# github
# ubuntu
# 工具
# 栈
# require
# 堆
# 线程
# gitlab
# 报错
# 的是
# 这不是
# 掉了
# 真有
# 你不会
# 而非
# 可通过
# 只看
# 它会
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
公司网站制作价格怎么算,公司办个官网需要多少钱?
中国移动官方网站首页入口 中国移动官网网页登录
详解CentOS6.5 安装 MySQL5.1.71的方法
如何用腾讯建站主机快速创建免费网站?
js实现点击每个li节点,都弹出其文本值及修改
香港服务器网站推广:SEO优化与外贸独立站搭建策略
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
潮流网站制作头像软件下载,适合母子的网名有哪些?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
Windows Hello人脸识别突然无法使用
微信小程序 require机制详解及实例代码
图册素材网站设计制作软件,图册的导出方式有几种?
如何在局域网内绑定自建网站域名?
详解Android中Activity的四大启动模式实验简述
UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】
JS弹性运动实现方法分析
高防服务器租用首荐平台,企业级优惠套餐快速部署
如何在腾讯云服务器上快速搭建个人网站?
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
WEB开发之注册页面验证码倒计时代码的实现
如何基于PHP生成高效IDC网络公司建站源码?
使用spring连接及操作mongodb3.0实例
如何在企业微信快速生成手机电脑官网?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
Laravel storage目录权限问题_Laravel文件写入权限设置
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
如何快速生成凡客建站的专业级图册?
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Laravel怎么在Blade中安全地输出原始HTML内容
制作旅游网站html,怎样注册旅游网站?
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
如何彻底卸载建站之星软件?
什么是javascript作用域_全局和局部作用域有什么区别?
如何快速搭建支持数据库操作的智能建站平台?
Laravel如何使用Collections进行数据处理?(实用方法示例)
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
制作公司内部网站有哪些,内网如何建网站?
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
网站制作报价单模板图片,小松挖机官方网站报价?
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
开心动漫网站制作软件下载,十分开心动画为何停播?
b2c电商网站制作流程,b2c水平综合的电商平台?


