swap領域を設定する
サーバ代節約のため、hubot サーバと開発環境サーバをまとめたら、 mysqld がOOM killer に殺されることがちょくちょく増えたので swap 領域を設定します。
OOM killed されたのを確認
$ sudo cat /var/log/messages | grep Killed Oct 11 18:22:25 kaihatsu kernel: Killed process 29702, UID 27, (mysqld) total-vm:1456776kB, anon-rss:491796kB, file-rss:64kB
優先順位を上げる
/proc/PID/oom_adjに(優先度低)-16から+15(優先度高)の値を設定することで優先度を設定できる。 -17を設定するとOOM Killerの対象外になる。
$ sudo cat /proc/[Process ID]/oom_score 2000 $ sudo echo -17 > /proc/[Process ID]/oom_adj $ sudo cat /proc/[Process ID]/oom_score 0
swap領域の確認
$ sudo grep Swap /proc/meminfo SwapCached: 0 kB SwapTotal: 0 kB SwapFree: 0 kB
swap 領域の作成
# 2GBのswap領域を作成 dd if=/dev/zero of=/swapfile1 bs=1M count=2048 # パーミッションの変更 chmod 600 /swapfile1 # swap領域用にフォーマット mkswap /swapfile1 # swap領域を有効化 swapon /swapfile1 # reboot時にswap有効化 echo "/swapfile1 swap swap defaults 0 0" >> /etc/fstab