くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

AWSのEC2にはスワップ領域がないので、自分で設定する

なんてことでしょう。t2.microやt2.smallなど小規模インスタンスの場合には、スワップ領域がないのです。
メモリ使用量が多めの場合には、メモリエラーになってしまうことも。

なので、自分でSwap領域を確保してあげなければいけません。ということで、その時の備忘録φ(..)メモメモ

スワップ領域を追加する

#!/bin/bash

# 1Mのブロックを512個で合計512Mのファイルを/swapfile1として作成
sudo dd if=/dev/zero of=/swapfile1 bs=1M count=512
# 644だとswaponのときに怒られるので、600にアクセス権限を変更
sudo chmod 600 /swapfile1
# スワップ領域を作成
sudo mkswap /swapfile1
# スワップ領域を有効化
sudo swapon /swapfile1

# 再起動してもスワップ領域がマウントされるように、/etc/fstabに追加
sudo sh -c 'echo "/swapfile1  none        swap    sw              0   0" >> /etc/fstab'

スワップの頻度を変更

スワップすると、ファイルI/Oが発生するので、遅くなることも。。
なので、スワップの頻度を少なく設定します。

# 現在の頻度を確認
cat /proc/sys/vm/swappiness
# => 60

# スワップ頻度を10に変更
echo 10 | tee /proc/sys/vm/swappiness
echo vm.swappiness = 10 | tee -a /etc/sysctl.conf

スワップ領域を元に戻す

# スワップ領域を無効化
swapoff /swapfile1

# スワップファイルを削除
rm -f /swapfile1

参考にしたサイト様