ホーム DoRuby Railsで「Lost connection to MySQL server during query」に遭遇した場合の対策

Railsで「Lost connection to MySQL server during query」に遭遇した場合の対策

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは!TrinityTです。

さて、先日Rais開発中に「Lost connection to MySQL server during query」というエラーが多発する現象に遭遇しました。

出力されているメッセージどおり、「MySQLのコネクションがクエリ実行中にロスとした」ということらしい。

調べてみたところ、以下のようなことが原因で発生するようです。

 ● 一回のコネクションで通信パケットが大きい場合

 ● セッションに多量の情報が入っている場合 

 ● APサーバ、DBサーバの性能が低い場合

この現象方法の対処方法として「 mysql_retry_lost_connectionというライブラリを使うことで改善される?」との情報を得たため試してみました。

検証した環境

OS:WindowXP SP2

Ruby:1.8.6(インストール済)

Rails:1.2.6(インストール済)
 

検証 

1.mysql_retry_lost_connection インストール

 既にRubyGemsで提供されているため、gemコマンドでインストールします。

 # gem install mysql_retry_lost_connection

2.require追加

railsのenvironment.rbファイルに、以下の記述を行います。

require ‘mysql_retry_lost_connection’

3. APを再起動します。

自分の開発環境で使用してみたところ、適用してから一度も「Lost connection~」現象が発生することはありませんでした。しかし、時折無限コネクションループに陥り、APが固まってしまう現象が発生しました。

結論

コネクションループ現象が非常に怖いため、本番サーバでつかうのは止めたほうが良いと思います。しかし非力な開発環境などで本現象に悩まされている場合には、適用してみてはいかがでしょうか?

記事を共有

最近人気な記事