运行作曲家更新时出现内存错误
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
(不会占用太多内存)。
如果你想知道update
和install
的区别,参考这个链接:What are the differences between composer update and composer install?
【讨论】:
您好,感谢您的回复。开发服务器上的 Composer 更新和 composer install 对于首次部署来说很好。但是对于接下来的几个部署,我们必须再次运行 composer update 意味着它会再次产生问题。或者我们必须每次都更新供应商,这非常繁重。 对于接下来的几次部署,理想情况下,在部署到 AWS 服务器之前,您必须始终在开发中运行composer update
,将代码推送到服务器中,然后在服务器中运行 composer install
.请看我上面的链接,好像你不明白composer install
和composer update
的作用。
这并不意味着composer install
只在第一次部署时运行。以上是关于运行作曲家更新时出现内存错误的主要内容,如果未能解决你的问题,请参考以下文章
PHP致命错误:允许1610612736字节作曲家更新的内存大小