PHPプログラマーの松永です。
EC2には、起動直後にSwapメモリがないため、メモリ不足が発生する場合があります。
メモリが不足すると、カーネルには実行する十分なメモリがなくなり、メモリを解放するために他のプロセスが強制終了されてしまいます。
その状態では、サーバーにログインすることができなかったり、サーバーにログインできてもコマンドがなかなか実行できなかったりという状況になります。
今回は、EC2のメモリ不足を予防するSwapメモリを作成を行う方法を紹介します。
目次
現状のメモリ情報確認
free -m
total used free shared buffers cached
Mem: 3952 937 3015 37 54 281
-/+ buffers/cache: 601 3351
Swap: 0 0 0
Swap
のtotal、used、freeが0になっています。
これはSwapメモリがないことを示しています。
Swapメモリの確保
今回は1GBを設定します。
2GBの場合は2048
となります。
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo chmod 600 /swapfile
Swapの有効化
有効化するコマンドを実行するとUUIDが表示されます。
後ほど、このUUIDを使用しますので、コピーしてください。
sudo mkswap /swapfile
sudo swapon /swapfile
メモリ情報確認
free -m
total used free shared buffers cached
Mem: 3952 937 3015 37 54 281
-/+ buffers/cache: 601 3351
Swap: 1023 0 1023
Swap
のtotal、freeに1023
が設定されました。
usedが0になっているのは、まだSwapメモリが使用されていないことを示しています。
再起動した場合にSwap領域がなくならないようにする
このままですとインスタンスを再起動した場合Swapメモリがなくなりますので、再起動後でもSwapメモリが確保されるように設定します。
UUIDはsudo mkswap /swapfile
を行った際に発行されたUUIDを使用します。
sudo vim /etc/fstab
UUID=xxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx / xfs defaults,noatime 1 1
/swapfile swap swap defaults 0 0
インスタンスを再起動
再起動は、AWS管理画面またはrebootで再起動します。
メモリ情報確認
free -m
total used free shared buffers cached
Mem: 3952 937 3015 37 54 281
-/+ buffers/cache: 601 3351
Swap: 1023 0 1023
Swap
のtotal、freeに1023
が設定されています。
これでインスタンスを再起動してもSwapメモリは設定されたままになっています。
以上です。
まとめ
今回はEC2のメモリ不足を予防するSwapメモリを作成を行う方法を紹介を紹介しました。
EC2では、初期起動時にはSwapメモリはありません。
そのため、メモリ不足が発生した場合まずはSwapメモリが設定されているかを確認することがおすすめです。
EC2をお使いの方の参考になれば幸いです。