MySQLが落ちる現象の原因を探る

/etc/mysql/my.cnfを見てlogファイルの場所を確かめる。

/log/mysql/log/error.logだったので、見てみる。エラーが出ている。

怪しそうなメッセージをかたっぱしからググってみる。

たどり着いたのはstack over flowの以下の質問。

mysql error The InnoDB memory heap is disabled - Stack Overflow

完全にこの回答者の現象と同じことが起きていた。

適切にswapの容量が確保されていないので、out of memoryになったときに完全にmysqlが落ちてしまいrestartできなくなっているということ。

なるほど確かに。/var/log/syslogをみてみると、Kernelがmysqlのプロセスを殺してしまっていることを確認できた。

xxxxxxx xxxxx kernel: [718015.886166] Out of memory: Kill process 12830 (mysqld)
score 85 or sacrifice child

freeコマンドにmオプションをつけると、今確保しているswap用のメモリを確認できる。

$ free -m
            total       used       free     shared    buffers     cached
Mem:        604340     587364      16976          0      29260      72280
-/+ buffers/cache:     485824     118516
Swap:            0          0          0

ということで、swapの設定を正しく行ったらメモリ不足になっても一旦swapすることでひとまずは落ちなくなりました。swapの設定の仕方は以下でまとめました。

totutotu.hatenablog.com