私はこれらのタイムアウトをグローバルに変更しました:
SET GLOBAL wait_timeout=30; SET GLOBAL interactive_timeout=30
これらの「低い」タイムアウトで問題が発生する別のアプリケーションが実行されていることに気付きました。これを元に戻し、特定のデータベースにのみ適用したいと思います。
MySQLマニュアルを参照してください wait_timeout
および interactive_timeout
は-28800
。
スレッドの起動時に、セッションのwait_timeout値は、クライアントのタイプに応じて、グローバルwait_timeout値またはグローバルinteractive_timeout値から初期化されます(CLIENT_INTERACTIVE接続オプションで定義) mysql_real_connect()に)。 interactive_timeoutも参照してください。
5.5.43
でも同じ問題が発生します。約2分を超えるいくつかの長いクエリに対して "has gone away"エラーメッセージが表示されていました。だから私はこれらを試しました3:
(1)SHOW VARIABLES LIKE 'wait_%';
(2)SHOW global VARIABLES LIKE 'wait_%';
および
(3)SHOW session VARIABLES LIKE 'wait_%';
。
すべてがwait_timeoutが28800
であることを示しました。次に、wait_timeout = 31536000
を/etc/my.cnf
に追加しました。その後、私の長いクエリを完了することができました。上記の変数を表示する3つの方法から、(2)「グローバル」の変数のみが28800から31536000への変化を示しました。他の2つは影響を受けませんでした。私の長いクエリは間違いなく10分未満だったので、これはここで使用される時間の単位がsecondsではなくmillisecondsだったことを意味しますか?