普段、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に対する同時接続数などを調整する必要があるかもしれません。
この辺りの設定はインスタンスの環境に応じて対応していく必要があるかと思います。
コメント