EC2のnanoやmicro、smallといった小さいインスタンスを使っていると、デフォルトではswap領域がないため、nginxをコンパイルする際やElasticsearchを起動する際など、メモリを多く必要とする処理が失敗してしまうことがよくあります。
また、スワップが頻繁に発生すると処理速度も心配になるので、なるべくメモリを使って頑張ってもらう設定も一緒にすると安心です。
スワップ領域の追加手順
512MBのswap領域を追加する手順です。作業はroot
ユーザ想定なので、適宜sudo
は追加してください。
dd if=/dev/zero of=/swapfile1 bs=1M count=512
chmod 600 /swapfile1
mkswap /swapfile1
swapon /swapfile1
echo "/swapfile1 none swap sw 0 0" >> /etc/fstab
設定追加されていることを確認。
cat /etc/fstab
# #
# LABEL=/ / ext4 defaults,noatime 1 1
# tmpfs /dev/shm tmpfs defaults 0 0
# devpts /dev/pts devpts gid=5,mode=620 0 0
# sysfs /sys sysfs defaults 0 0
# proc /proc proc defaults 0 0
# /swapfile1 none swap sw 0 0
free
コマンドでもSwap領域と使用されている領域を確認できます。
free -m
# total used free shared buffers cached
# Mem: 2003 1932 70 0 0 19
# -/+ buffers/cache: 1912 90
# Swap: 511 511 0
スワップ頻度の変更手順
swappiness
でスワップの頻度を変更できます。
AmazonLinux
ではデフォルトで60になっていました。
cat /proc/sys/vm/swappiness
# 60
root
ユーザでの作業想定の手順。
echo 10 | tee /proc/sys/vm/swappiness
echo vm.swappiness = 10 | tee -a /etc/sysctl.conf
変更を確認します。
grep swappiness /etc/sysctl.conf
# vm.swappiness = 10
AWS等でメモリ領域の小さいEC2インスタンスを使う際には設定しておくと安心です!