0

0

Composer报错The process has been killed_解决Composer占用内存过高【避坑】

裘德小鎮的故事

裘德小鎮的故事

发布时间:2026-02-13 09:11:34

|

766人浏览过

|

来源于php中文网

原创

composer install/update 被 kill 是因依赖解析内存峰值超 1.5gb 触发 linux oom killer;应设 composer_memory_limit=1g、加 --no-dev --optimize-autoloader、禁用并行安装,并定期更新 lock 文件、精简 dev 依赖、避免通配符版本。

composer报错the process has been killed_解决composer占用内存过高【避坑】

Composer install 或 update 时进程被系统 kill

这是典型的内存溢出(OOM)现象,Linux 内核主动终止了 composer 进程,错误信息里通常带 Killed 字样(不是 PHP 报错,不显示堆栈),dmesg -T | tail 能看到类似 Out of memory: Kill process 12345 (php) score 892... 的日志。

  • 根本原因不是 Composer 本身写得差,而是其依赖解析器在处理大型项目(如 Laravel + 多个 dev 依赖 + lock 文件过期)时会构建庞大的依赖图,PHP 进程峰值内存常超 1.5GB
  • 默认配置下,composer installupdate 更容易触发 OOM,因为要校验并解压全部包(尤其是含大量 assets 或扩展的包,如 laravel/frameworksymfony/symfony
  • 共享主机、CI 环境(如 GitHub Actions 默认 2GB)、或未调优的 Docker 容器(--memory=1g)最常中招

限制 Composer 内存使用但不失败

别用 php -d memory_limit=-1 composer.phar install —— 这反而加速被 kill。正确做法是主动限流,让 Composer “慢但不死”:

  • COMPOSER_MEMORY_LIMIT 环境变量硬性截断:运行前执行 export COMPOSER_MEMORY_LIMIT=1G(注意单位是 GM,不能写 1024M,否则识别失败)
  • 搭配 --no-dev--optimize-autoloader:生产环境部署必须加,跳过 dev 依赖解析可降内存 40%+;--optimize-autoloader 延后类映射生成,避免早期爆内存
  • 禁用并行解包:加 --disable-tls 无用,真正有效的是 COMPOSER_DISABLE_PARALLEL=1,强制串行安装,减少瞬时内存尖峰

从源头降低依赖解析压力

很多团队只在报错后才优化,其实 composer.json 结构和 lock 文件状态才是关键变量:

Wordware
Wordware

Wordware是一个自然语言编程工具,使任何人都可以开发、迭代和部署有用的AI应用程序。

下载
  • composer.lock 过期越久,update 时需计算的版本组合爆炸式增长 —— 每月至少跑一次 composer update --dry-run 检查是否可安全更新
  • 删掉没用的 require-dev 包,特别是全量安装的测试工具(如 phpunit/phpunit 9.x 依赖树极深);改用 require-dev + config.platform.php 锁定低版本 PHP 运行时,避免解析高版本兼容路径
  • 避免通配符版本约束:"monolog/monolog": "^2.0""monolog/monolog": "*" 安全得多;后者会让 Composer 尝试所有已发布版本来满足依赖,内存直接拉满

Docker 或 CI 环境的特殊处理

本地能跑不等于容器里能跑,cgroup 限制比 PHP memory_limit 更底层:

  • Docker 启动时务必加 --memory=2g --memory-swap=2g,否则即使 PHP 限 1G,内核仍可能因 swap 不足 kill 进程
  • GitHub Actions 中,ubuntu-latest 默认只有 7GB 内存但被 runner 自身占用近 2GB,建议显式指定 runs-on: ubuntu-22.04 并在 step 开头加 free -hcat /sys/fs/cgroup/memory/memory.limit_in_bytes 排查真实可用内存
  • 若用 docker build 阶段运行 Composer,优先用 multi-stage:build 阶段用大内存容器装依赖,final 阶段只复制 vendor/,彻底规避运行时内存问题

最易被忽略的一点:Composer 的 OOM 往往发生在解压后加载 autoloader 的瞬间,此时 PHP 已接管内存管理,COMPOSER_MEMORY_LIMIT 失效。这时候只能靠提前裁剪依赖或换更轻量的自动加载策略(比如放弃 PSR-4 全局扫描,改用 classmap 显式声明)。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
PHP Symfony框架
PHP Symfony框架

本专题专注于PHP主流框架Symfony的学习与应用,系统讲解路由与控制器、依赖注入、ORM数据操作、模板引擎、表单与验证、安全认证及API开发等核心内容。通过企业管理系统、内容管理平台与电商后台等实战案例,帮助学员全面掌握Symfony在企业级应用开发中的实践技能。

82

2025.09.11

laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

329

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

285

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

560

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

378

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

127

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

78

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

69

2025.08.05

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

12

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十四期_PHP8编程
第二十四期_PHP8编程

共86课时 | 3.4万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.5万人学习

第二十三期_PHP编程
第二十三期_PHP编程

共93课时 | 7.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号