Amazon EC2のt1.microインスタンスでMySQLが落ちる場合の対処方法

2017年5月10日

普段、AmazonのEC2を利用する際には「t1.micro」のインスタンスを利用することが多いのですが、この環境でMySQLを起動していると、知らないうちにMySQLが落ちることがよくあったので、その場合の対処方法を書いておきます。

原因

そもそも、「t1.micro」の環境でMySQLが落ちるのはバッファが足りていないためでした。
MySQLのログを確認してみると「Fatal error: cannot allocate memory for the buffer pool」というエラーを吐いてました・・・。

メモリの状況を確認してみる

メモリに問題があるようなので、サーバのメモリを確認してみます。

$ free
             total       used       free     shared    buffers     cached
Mem:       1019320     923424      95896         24      43104      96320
-/+ buffers/cache:     784000     235320
Swap:            0          0          0

Swap領域がゼロになってました。「t1.micro」インスタンス自体、メモリもあまり多くなく、Swap領域も無いみたいなので、Swap領域を作ることでMySQLが落ちるという問題に対処できそうです。

Swap領域を作成する

下記コマンドを実行し、Swap領域を作成します。

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024

$ sudo mkswap /swapfile

$ sudo swapon /swapfile

これでSwap領域が作成されたはずなので、もう一度freeコマンドを実行して確認してみます。

$ free
             total       used       free     shared    buffers     cached
Mem:       1019320     923424      95896         24      43104      96320
-/+ buffers/cache:     784000     235320
Swap:      1048572     326632     721940

Swap領域が作成されていることが確認できました。

最後に

Swap領域を作成したので、MySQLが落ちることは基本的には無くなったかと思います。が、アクセス数次第ではMySQLが落ちる可能性がありますので、その場合はMySQLに対する同時接続数などを調整する必要があるかもしれません。
この辺りの設定はインスタンスの環境に応じて対応していく必要があるかと思います。