odeの開発メモ日記

プログラマーやってます。今までの道のり ポケコンbasic→C(DirectX5 ネットやろうぜ)→Perl(ちょろっと)→Java→C#→Ruby→Android(Java)

MySQLでDBの接続がきれるタイミング

接続がきれるタイミング(環境によってはもっとあるでしょうが)

  • MySQLのtimeout
    • my.cnfのwait_timeout デフォルト値は8時間
  • SLBを経由してDB接続している場合はSLBのtimeout
    • ipvsadm --set tcp tcpfin udp (set connection timeout values) デフォルト値は5,6分

timeout自体の判定

  • 送受信されるデータがなくなってから。
  • 接続をはりっぱなしにしていても常にsqlを発行していれば問題なし。

問題がでそうな状況

  • 接続を張りっぱなしにしておいてバッチ等で重い集計処理をしてからインサートする場合等や、SQL自体がゲロ重な場合等々。 このような状況で通信が発生しなくなるとtimeout値を越して接続が切れます。

切れた状態でSQLを発行すると

  • MySQL server has gone away

  • Lost connection to MySQL server during query

というようなエラーになります。