skillup

技術ブログ

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

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

投稿日:

先日、あるサーバーで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

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

スワップ割り当て

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

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

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

参考リンク

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

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

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

執筆者:


comment

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

関連記事

no image

メールヘッダ・インジェクション

Contents1 メールヘッダ・インジェクションとは?2 被害3 対策 メールヘッダ・インジェクションとは? お問い合わせメールなどでメールのヘッダを悪意のある第三者に自由に変更させられてしまう機能 …

no image

php5.6のインストール+cake3でのbake

cake3を動かしたい場合、PHP5.4以上でないと動きません。 2016年1月現在、CentOS6でyumでPHPをインストールする場合、php5.3ですので、5.4以上を入れる場合、別のリポジトリ …

no image

php-fpmトラブル(nginxが競合?)

php-fpmが急に停止になるトラブルがあったので、ちょっとメモ。 php-fpmを再起動しようとしても下記のようなエラーが・・・

p …

no image

パス名パラメータの未チェック・ディレクトリトラバーサル

本日もセキュリティ関係のネタを少々。ディレクトリ・トラバーサルという攻撃です。 Contents1 ディレクトリ・トラバーサルとは?2 被害3 対策4 参考リンク ディレクトリ・トラバーサルとは? g …

no image

cake3でのバッチスクリプト

以前、cakeでのバッチをこちらのエントリーで書きましたが、今回は3系でのバッチの書き方について。 といってもほとんど同じですが・・・ Contents1 ディレクトリ2 ソース ディレクトリ src …