ランプの中身(Ruby on Railsのシステム開発)
ランプの中身(Ruby on Railsのシステム開発)では、株式会社ケイビーエムジェイのRuby on Railsエンジニアが蓄積したノウハウを公開しています。Ruby on Railに関する技術解説や実践的なノウハウなど、開発現場の技術に則したコンテンツを随時追加していきます。 初心者の方でもわかりやすい技術解説を心がけています。リクエスト、ご質問も受け付けいますので、ご気軽にコメントを記述して下さい。

< RubyでActiveRecordを使わ... | メイン | 簡単&便利 Capistranoのススメ... >

TrinityTの中身(Ruby
2008.02.04

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


こんにちは!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が固まってしまう現象が発生しました。

 

結論

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

コメント (0)  |トラックバック (0)

ブックマークに追加する Subscribe with livedoor Reader あとで読む

トラックバック URL

この記事にコメントする

ニックネーム:
メールアドレス:
URL:


KBMJのWebソリューション
Ruby on Rails Summer Festival 2008開催決定!!

TOPICS

2008/06/25
ZD Net Builder」の連載記事です。第四回は「Rubyでどう書く?:重複したRSSをまとめる」が掲載されました。

2008/05/30
ZD Net Builder」の連載記事です。第三回は「Rubyでどう書く?:Rubyで特定URLの画像パス一覧を表示する」が掲載されました。

2008/05/07
ZD Net Builder」に連載を始めました。第二回は「Rubyでどう書く?:RubyでPDF履歴書を作成する」が掲載されました。

2008/04/24
アットマーク・アイティ」に『 Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する』が掲載されました。

全体のRoR最新ブログ一覧

プロフィール

  • TrinityT
  • 30 歳

ブログの購読

RSS

timelog
株式会社ケイビーエムジェイロゴ