AWS EC2, Cloud9 composer create-project でメモリ足りない問題の対策
AWS EC2 や Cloud9 で composer create-project
コマンドでLaravelをインストールする際メモリ不足で失敗する場合があります。
環境
- OS: CentOS7.6
Linuxであれば同様の手順でSwapを設定できると思います。
エラー
$ composer create-project --prefer-dist "laravel/laravel=5.8.*" .
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
Swapがないことの確認
Swapを確認する方法は3つあります。(他にもあったら教えてください)
free コマンド
$ free -m
total used free shared buff/cache available
Mem: 989 71 633 12 284 718
Swap: 0 0 0
Swap が 0 になっていること
/proc/meminfo
$ cat /proc/meminfo
(一部省略)
MemTotal: 1013196 kB
MemFree: 648760 kB
MemAvailable: 735956 kB
Buffers: 0 kB
Cached: 208092 kB
SwapCached: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
SwapTotal と SwapFree が 0 になっていること
/proc/swaps
$ cat /proc/swaps
Filename Type Size Used Priority
Swapが結果に出てこないこと
swapファイル領域を確保
$ sudo /bin/dd if=/dev/zero of=/swap bs=1M count=1024
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 12.9409 秒、 83.0 MB/秒
$ ls -lh /swap
-rw-r--r--. 1 root root 1.0G 8月 4 05:52 /swap
1G分の領域が確保されました。
パーミッションを変更
$ sudo chmod 600 /swap
$ ls -lh /swap
-rw-------. 1 root root 1.0G 8月 4 05:52 /swap
rootユーザーのみ読み書きできるようにします。
swapの作成(ファイルシステムをswapにする)
$ sudo mkswap /swap
スワップ空間バージョン1を設定します、サイズ = 1048572 KiB
ラベルはありません, UUID=8bf61268-456b-4bd4-a9ac-9adf03415098
swapの有効化
$ sudo swapon /swap
Swapがあることの確認
$ free -m
total used free shared buff/cache available
Mem: 989 68 80 12 840 718
Swap: 1023 0 1023
/proc/meminfo
$ cat /proc/meminfo | grep Swap
(一部省略)
MemTotal: 1013196 kB
MemFree: 82220 kB
MemAvailable: 735656 kB
Buffers: 0 kB
Cached: 768612 kB
SwapCached: 0 kB
SwapTotal: 1048572 kB
SwapFree: 1048572 kB
/proc/swaps
$ cat /proc/swaps
Filename Type Size Used Priority
/swap file 1048572 0 -2
Laravelのインストールを再実行する
$ composer create-project --prefer-dist "laravel/laravel=5.8.*" .
問題なくインストールできればokです。
Swap領域の無効化
$ sudo swapoff /swap
$ sudo rm /swap
Swap領域を残しておくとそれだけディスク容量を使ってしまうので、今度はディスク足りない問題が発生するかもしれません。(デフォルト8GBだったと思うので)
今回はSwap領域を無効化、Swapファイルの削除をしておきましょう。
補足
swapの永続化
システムを再起動した場合、swap領域が無効化されてしまいます。
永続化するためには、viなどで /etc/fstab
を開き下記の1行を追記する必要があります。
/swap swap swap defaults 0 0
今回は composer create-project
コマンド実行時にエラーとなったので、インストールできたらswapは不要になるので永続化の必要ありません。
参考記事
Author And Source
この問題について(AWS EC2, Cloud9 composer create-project でメモリ足りない問題の対策), 我々は、より多くの情報をここで見つけました https://qiita.com/ucan-lab/items/31831944586deed4b6c5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .