EC2の多くのインスタンスタイプではデフォルトでスワップ領域が割り当てられてないんですよ。
スワップ領域とはメモリがパンクしそうな時に退避する場所ですが、EBSでディスク容量を変えたりすることを想定してデフォルトではスワップ領域を割り当てていないんですかね。
理由は分かりませんが、スワップ領域を割り当てておくと急激に負荷がかかった時に多少は助けになってくれますので、気になる方は割り当てておきましょう。
スワップ領域を割り当てるのは、簡単にできますし一定の効果がありますのでやっておいて損はないと思います!
AWS公式サイトで割り当て方を解説しているページがありますので、そちらを参考にしていきたいと思います。
適切なスワップ領域の容量は?
AWS公式サイトでは以下のように説明されています。
物理 RAM の量 | 推奨されるスワップ領域 |
2 GB 以下の RAM | RAM 容量の 2 倍、ただし常に 32 MB を超える |
2 GB 以上の RAM、ただし 32 GB 未満 | 4 GB + (RAM – 2 GB) |
32 GB 以上の RAM | RAM 容量の 1 倍 |
自分の環境に合わせてスワップ領域の容量を計算してみてください
スワップ領域の割り当て
それではスワップファイルを割り当てていきましょう。
基本的にコピペですらすらいけます。
スワップファイルを作成する
ddコマンドを利用して、ブロックサイズ、ブロック数を指定してスワップファイルを生成します。
sudo dd if=/dev/zero of=/swapfile bs=128M count=32
上記のコマンドでは4Gのスワップファイルを作成していますので、自分の適正なサイズに合わせてブロックサイズやブロック数を変更してください。
スワップファイルの権限を更新
sudo chmod 600 /swapfile
Linux スワップ領域をセットアップ
sudo mkswap /swapfile
スワップ領域にスワップファイルを追加
sudo swapon /swapfile
追加できているかに関しては以下のコマンドで確認できます。
追加できている場合は、/swapfileの情報が表示されます。
インスタンス起動時にスワップファイルを有効にする
まずは /etc/fstab ファイルをエディタで開きます。
sudo vi /etc/fstab
ファイルの末尾に以下の行を追加して、ファイルを保存します。
/swapfile swap swap defaults 0 0
以上でスワップ領域の割り当ては終了です。
最後に
設定が終わりましたら
free -m
などできちんとスワップ領域が追加されているか確認しましょう。
t2microとかで個人のサイトを運用しているとどうしてもメモリが足りないということもありますので、スワップ領域を追加しておくと安心ですね。
もし、スワップ領域を追加してもサーバが安定しないという方は、純粋にメモリなどのスペックが足りないかメモリリークしている可能性があります。
私は、以前WordPressで使っていたプラグインがメモリを食いきってしまっていて安定しなかったことがありました。
スワップ領域を追加してプラグインの設定を変えたらそんなことはなくなったので少しでもサイトが重いなと感じたらやってみるといいと思います!
コメント