Amazon Linux2のswap領域を拡張する

Laravel Linux

「Amazon Linux2」で「Laravel」のプロジェクトを作成しようとした際に、以下のようなエラーが発生して作成できないことがあります。

$ composer create-project --prefer-dist laravel/laravel dev
Installing laravel/laravel (v6.0.2)
・・・・・
mmap() failed: [12] Cannot allocate memory
PHP Fatal error:  Out of memory (allocated 476061696) (tried to allocate 4096 bytes) in 

このようなエラーが発生した場合は、swap領域を拡張することで解決できる場合があります。

現在のswap領域を確認する

$ free -m
              total        used        free      shared  buff/cache   available
Mem:            985         434         468           2          81         432
Swap:             0           0           0

swap領域は「0」であることが確認できます。

swap用のファイルを作成します

ここでは1GBの領域を確保します。必要に応じて容量を増減させてください。(2GBの場合は count=2048)

$ sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 1.05558 秒、 1.0 GB/秒

swap用ファイルをswap領域にセット

作成したswap用ファイルをswap領域にセットします。

sudo /sbin/mkswap /var/swap.1
スワップ空間バージョン 1 を設定します。サイズ = 1024 MiB (1073737728 バイト)
ラベルはありません, UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

swap領域を有効化

以下のコマンドを実行してswap領域を有効にします。

$ sudo /sbin/swapon /var/swap.1

再度、swap領域の確認

「free」コマンドで再度swap領域を確認します。先程は「0」でしたが現在は「1023」になって拡張されたことが確認できました。

$ free -m
              total        used        free      shared  buff/cache   available
Mem:            985         446          68          12         470         374
Swap:          1023           0        1023

なお、拡張したswap領域は再起動するとクリアされます。swap領域を常に拡張したい場合は別途自動的に有効にさせる設定が必要になります。

それではみなさん、自由なWEBライフをお過ごしください!

タイトルとURLをコピーしました