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

cake sql系+リレーション+ヘルパー

先月末に引き続いてcakeネタをもりっといきます。 といっても自分用の小ネタリンク集です。 Contents1 sql系の小ネタ1.1 findとread1.2 find(‘count&# …

no image

Facadeパターンについて(Laravelを題材に)

LaravelのFacadeについて自作する機会があったので、メモ。 デザインパターンの一種かと思います。 Contents1 サンプル2 使い所3 メリット4 デメリット5 参考リンク サンプル h …

no image

Sambaインストール

オフィスでサーバーをたてていますが、普段使っているメインのPCとのファイルのやりとりをSFTPクライアントなどでするのが面倒くさいので、同期させるためにSambaをインストールしました。 環境ですが、 …

no image

環境構築の手法について

2019年9月現在、PHPは7系(最新は7.3)を使うことが一般的ですが、たまにレガシー案件などでPHP5系を使ったりすることはあります。 まあ7系でも7.0じゃ動かないとか色々な制約あるんですけど・ …

no image

PHPでのスクレイピング

本日はPHPスクレイピングについて。 スクレイピング自体はRuby、Javaとやってきました。 PHPに関しては昔、正規表現でごりごりやってましたね。これを使えば何でもできるんで一番早いです。 が・・ …

アーカイブ