运行作曲家更新时出现内存错误

Posted

技术标签:

【中文标题】运行作曲家更新时出现内存错误【英文标题】:Memory error while running the composer update 【发布时间】:2019-03-27 06:37:34 【问题描述】:

错误:

更新 vlucas/phpdotenv (v2.4.0 => v2.5.1): 以下异常 是由于缺少内存或交换空间,或者没有配置交换空间造成的 查看 https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors 了解详情

目前 AWS Instance RAM:2GB

虽然我们已通过将 RAM 从 2GB => 4GB 升级来解决此问题,但我毫不怀疑增加 RAM 这不应该是小型网站的解决方案。

请您检查以下几点:

1) Laravel 更新包所需的推荐内存是多少(composar.phar 更新)?

2) 在作曲家更新时,laravel 是否也使用 SWAP 内存?

【问题讨论】:

Composer 是一个已知的内存消耗者,只需检查它的 bugtracker。您还可以在此处找到一些解决此问题的提示。 【参考方案1】:

我也遇到了同样的问题,一直没找到原因。您可以运行composer update --profile 甚至composer update --profile -vvv 来详细了解幕后发生的事情。第一个将显示使用了多少内存。

不应超过 600Mb。但是你仍然会耗尽内存。当 laravel 应用程序进入维护模式时,它不应该添加到它。你可以在第二个 shell 中运行命令 top -ac 看看那里会发生什么。

托管公司也无法帮助我,因为他们把这归咎于我哈哈。

但是有办法解决。仅上传composer.lock,并在生产服务器上运行composer install --no-dev。它会给你一个关于过时包的警告。回答“是”,您的产品服务器将顺利更新。此命令也运行 laravel composer.json 脚本命令并更新 composer.json 包版本..

【讨论】:

我们也可以试试这个,解决了问题-------------------------------- -------------------- /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 /sbin/mkswap /var /swap.1 /sbin/swapon /var/swap.1 ------------------------------------ ---------------- 如果您遇到错误(未找到的东西),我上周遇到了这个问题。运行composer dump-autoload,错误消失。【参考方案2】:

理想情况下,composer update 仅在您的开发环境中运行,当您将代码推送到 AWS 服务器时,您必须使用的命令是 composer install(不会占用太多内存)。

如果你想知道updateinstall的区别,参考这个链接:What are the differences between composer update and composer install?

【讨论】:

您好,感谢您的回复。开发服务器上的 Composer 更新和 composer install 对于首次部署来说很好。但是对于接下来的几个部署,我们必须再次运行 composer update 意味着它会再次产生问题。或者我们必须每次都更新供应商,这非常繁重。 对于接下来的几次部署,理想情况下,在部署到 AWS 服务器之前,您必须始终在开发中运行 composer update,将代码推送到服务器中,然后在服务器中运行 composer install .请看我上面的链接,好像你不明白composer installcomposer update的作用。 这并不意味着composer install只在第一次部署时运行。

以上是关于运行作曲家更新时出现内存错误的主要内容,如果未能解决你的问题,请参考以下文章

PHP致命错误:允许1610612736字节作曲家更新的内存大小

浅谈 ABAP 程序运行时出现『内存耗尽』错误的问题试读版

通过 Cloud Composer 运行气流时出现授权错误

处理大型数据集时出现内存不足错误

当我为 laravel 版本 7.3.0 安装 laravel/ui 时出现错误

Powershell - 针对大型目录运行脚本时出现内存不足错误