
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をお使いの方の参考になれば幸いです。
