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

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

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です