【问题标题】: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。您还可以在此处找到一些解决此问题的提示。

标签: php linux laravel


【解决方案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只在第一次部署时运行。
猜你喜欢
  • 2017-01-20
  • 1970-01-01
  • 2016-08-07
  • 2016-06-05
  • 2016-05-14
  • 2021-08-07
  • 1970-01-01
  • 2021-05-14
  • 2016-07-22
相关资源
最近更新 更多