マニアな管理人が実際に借りている数々のレンタルサーバーに関する情報をお届け

ロリポップレンタルサーバーでMYSQLのタイムアウトでハマる。

ロリポップでCRONを使ってあるデータを取得する処理を書いたのですが、処理の最後にあるDBへのデータ挿入が何故か失敗する。

mysql_error()でエラーを表示してみたところ、表示されるエラーは↓これ


MySQL server has gone away

SQL発行時にコネクションがクローズされると出るエラーらしいです。

しかしコードのどこをみてもmysql_close()はしていない。

 

connect timeoutが原因だった。

作成したプログラムは開始から終了まで20秒程かかる。

流れとしては開始→DB接続→1秒のスリープを15回程入れながら他サーバーからデータ取得→最後にDBにデータを挿入するといった流れでした。

つまりDB接続からDBへのデータ挿入までに15秒以上の空きが発生します。

こんなプログラムは殆ど書かないので、気がつくまでに結構時間がかかりました。

原因はMYSQLのconnect timeoutです。

調べてみたところ、ロリポップではデフォルトの10秒です。

DBの接続をデータ挿入直前に移動して解決しました。

 

てっきりロリポップ特有の現象かと思ったのですが、プログラムに問題がありました。

 

他サーバーのconnect timeout値を調べてみる

なんとなく気になったので、他のレンタルサーバーの設定値を調べてみました。

  • CORESERVER→5秒
  • ハッスルサーバー→10秒
  • XSERVER→10秒
  • さくら→30秒
  • エクストリム→10秒

どんな理由で変更しているのかわかりませんが、CORESERVERとさくらはデフォルトの値から変更されていました。

さくらはなんと通常の3倍の値です。

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。