skillup

技術ブログ

PHP サーバー・ネットワーク

メモリー不足でのスワップ割り当て

投稿日:2019年2月23日 更新日:

先日、あるサーバーでcomposerをinstallしようとしたところ、
The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details

[ErrorException]
proc_open(): fork failed – Cannot allocate memory

のようなエラーが出ました。要はメモリ不足ですね。

AWS(EC2)だったんですが、どうやらmicroだったようで、メモリも2Gしかないようです。

PHPのメモリーがらみ制限

PHPに割り当てるメモリの解放です。

その前にPHPに割り当てるメモリを測定してみましょう。
php -r 'phpinfo();' | grep memory_limit
でPHPに割り当てられてるメモリを測定できます。

んで、こっからの対処法は以下のような感じでしょう。

  1. php.iniそのものをいじってmemory_limitをあげる
    一番クリティカルでサーバー内全体に影響が出ます。
  2. ini_set(‘memory_limit’ ‘xxxxm’)
    そのプログラム単体でのメモリ使用量のコントロールです。
  3. 下記のようなコマンドでコマンド実行時に一時的に割り当てることができます。
    php -d memory_limit=-1 /usr/local/src/composer.phar install
    一般のcomposerコマンドですと以下のようになります。

    php -d memory_limit=-1 /usr/bin/composer require aws/aws-sdk-php

*ちなみに-1と設定するとメモリ上限が上限なしになります。

スワップ割り当て

ところが今回のケースでは上記の方法では解決できませんでした。どうやら根本的にメモリ不足らしく色々調べたところスワップ領域を作成すれば良いとのこと。

下記コマンドで1G分のスワップを割り当てて無事解決できました。

こういうのってOSインストール実行時にやるもので、そんなことが可能なのか?と思いましたが、コマンドでできるんですね・・・

参考リンク

composer updateがPHPのメモリ制限に引っかかってできない時

Composerでメモリエラーが発生したときの対処方法【詳細解説】

-PHP, サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

ロードアベレージ監視シェルスクリプト

ロードアベレージの監視シェルスクリプトについて Contents1 使用コマンド1.1 uptime1.2 /proc/cpuinfo1.3 bc2 ソース3 他参考リンク 使用コマンド uptime …

no image

自力での監視

Zabbixの勉強を進めていますが、マニュアル通りに設定していて、中で何をやっているかをあまり理解していなかったりします。 それだとちょっとまずいのでZabbixでの構築とともに自力での監視スクリプト …

no image

ansible host指定,変数の外だし,ユーザー追加

Ansibleにてhostユーザーやユーザーの追加などす。 Contents1 ホストの指定2 ユーザーの追加2.1 変数を別ファイルに2.2 パスワードのハッシュ化2.3 パスワードなしでsudo2 …

no image

phpの時分秒+cakePHPのupdate

ちょっと小ネタ集になります。 Contents1 PHPで秒→時分秒変換2 cakePHPでのupdate PHPで秒→時分秒変換 PHPで秒数から時分秒に変換するプログラムです。 汎用的かなと思った …

no image

サーバーレスやPassについての所感など

firebaseについてここ数日ちょこちょこ触りました。一昔前はwebアプリというと、ほとんどがCentOSにapacheとMySQLを入れて・・・というパターンが大部分でしたが、2020年6月現在、 …

アーカイブ