その他
    ホーム技術発信DoRubyRailsで「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が固まってしまう現象が発生しました。

    結論

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