0

0

composer如何在内存只有512MB的服务器上成功运行install?(swap + no-plugins技巧)

裘德小鎮的故事

裘德小鎮的故事

发布时间:2026-03-01 11:21:00

|

177人浏览过

|

来源于php中文网

原创

oom killer 杀死进程是因内存峰值超512mb,需组合使用--no-plugins、--no-dev、--prefer-dist等参数降内存,并配1gb swap+vm.swappiness=10兜底;线上部署必须用install而非update。

composer如何在内存只有512mb的服务器上成功运行install?(swap + no-plugins技巧)

内存不足时 composer install 直接 OOM 被 kill 怎么办

512MB 内存跑 composer install 大概率失败,不是超时,是系统直接 Killed process php (pid 1234) —— Linux OOM Killer 干的。Composer 默认会加载所有插件、解析完整依赖图、缓存大量对象,峰值内存轻松突破 1GB。不改策略,光调 memory_limit 没用,PHP 层面限制不住底层进程实际占用。

  • 别信 php -d memory_limit=-1 composer install,这只是骗过 PHP 的内存检查,OOM Killer 照杀不误
  • swap 不是万能的,但 512MB 机器配 1GB swap 是性价比最高的兜底手段(dd if=/dev/zero of=/swapfile bs=1G count=1 && mkswap /swapfile && swapon /swapfile
  • swap 启用后必须调低 vm.swappiness(建议设为 10),否则 PHP 进程会过早换出,反而拖慢安装速度

--no-plugins 能省多少内存?什么情况下必须加

Composer 插件(比如 hirak/prestissimosymfony/flex)在 install 阶段会提前加载并执行钩子逻辑,每个插件都可能实例化一堆服务类。禁用后,内存峰值常能压到原来的 1/3~1/2。

  • --no-plugins 不影响最终安装结果,只是跳过插件的“增强行为”(如自动脚本执行、包配置注入)
  • 如果项目没用到 Flex、Doctrine Behaviors、或自定义 installer,基本可以安全加;用了的话,得确认是否真需要它在 install 时介入
  • 配合 --no-scripts 更彻底(跳过 post-install-cmd 等),但要注意后续是否要手动补运行

还有哪些参数能一起压内存峰值

单靠一个参数不够,得组合压制:插件关掉、并发降下来、缓存少读点、解析少做点。

BeatBot
BeatBot

Splash的AI音乐生成器,AI歌曲制作人!

下载
  • --no-dev:开发依赖不解析不下载,对内存和时间都是立竿见影的节省(CI 环境必加)
  • --prefer-dist:强制走压缩包而非 Git 克隆,避免临时解包+Git 对象加载的内存开销
  • -v--verbose 反而会增内存(日志对象堆积),非调试时去掉
  • 如果已跑过一次,删掉 vendor/ 前先清空 ~/.composer/cache/,旧缓存有时带损坏索引,触发反复重试解析

为什么 composer updateinstall 更容易崩

update 要重新计算整个依赖图、比对版本约束、尝试回溯求解——这个过程算法复杂度高,且 Composer 会缓存中间状态对象,512MB 下大概率撑不住。而 install 只是按 composer.lock 精确还原,可控得多。

  • 线上部署永远用 composer install,别用 update
  • 如果 lock 文件缺失或过期,宁可在高配机器上生成好再传上去,也不要在 512MB 机上硬跑 update
  • 某些旧版 Composer(packagist.org 元数据时有内存泄漏,升级到 2.x 能缓解(但 2.x 默认内存要求更高,需同步加 --no-plugins --no-dev --prefer-dist

swap 和 --no-plugins 是底线组合,但真正卡住的往往是某个插件或 dev 依赖偷偷拉了巨包(比如 phpstan/phpstanlarastan/larastan)。遇到反复 OOM,先看 composer.jsonrequire-dev 有没有可疑大块头,删了再试——比调参数快得多。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
PHP Symfony框架
PHP Symfony框架

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

85

2025.09.11

composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

161

2023.12.25

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

837

2023.08.22

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

201

2023.11.20

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

429

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

599

2023.08.10

flex教程
flex教程

php中文网为大家带来了flex教程合集,Flex是采用Flex布局的元素,称为Flex容器(flex container),简称"容器",它的所有子元素自动成为容器成员,有三个核心概念: flex项,需要布局的元素;flex容器,其包含flex项;排列方向,这决定了flex项的布局方向。php中文网还为大家带来flex的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

367

2023.06.14

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

958

2023.07.05

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

24

2026.02.28

热门下载

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

精品课程

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

共86课时 | 3.5万人学习

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

共28课时 | 2.6万人学习

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

共93课时 | 7.4万人学习

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

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