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