EC2にSwapメモリを作成

ブログメインビジュアル

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

この記事を書いた人 matsunaga 自宅に音楽スタジオがあるとこを夢見るPHPエンジニア
TOP