ホームページ > データベース > mysql チュートリアル > 「wait_timeout」がはるかに長いにもかかわらず、MySQL クエリが 60 秒後にタイムアウトになるのはなぜですか?

「wait_timeout」がはるかに長いにもかかわらず、MySQL クエリが 60 秒後にタイムアウトになるのはなぜですか?

Susan Sarandon
リリース: 2024-11-27 05:07:13
オリジナル
344 人が閲覧しました

Why is my MySQL query timing out after 60 seconds, even though `wait_timeout` is much higher?

MySQL サーバーが停止しました - 予想から 60 秒離れています

この記事では、MySQL サーバーがクエリを実行する原因について説明します120 秒続いた問題 60 秒後にタイムアウトし、エラーがスローされる問題。クエリは正常に実行されていましたが、PHP スクリプトの問題によりこのエラーが発生しました。

問題の症状

  • PHP SELECT SLEEP(120) 経由でクエリを実行すると、60 秒後にタイムアウトになります。
  • MySQL クライアントから同じクエリを実行すると、正常に実行されます。
  • タイムアウトは毎回 60 秒に固定されており、リソース制限ではなくセットアップの問題である可能性があることが示唆されています。

システム構成

  • Windows Server 2003
  • MySql 5.1.36-コミュニティ
  • PHP 5.3

分析

SHOW VARIABLES 出力を確認したところ、wait_timeout が 28800 (480 分) に設定されていることがわかりましたが、エラーはまだ存在します。これは、wait_timeout が問題ではないことを示しています。

解決策

問題の原因は、PHP オプション mysql.connect_timeout です。このオプションは、接続タイムアウトだけでなく、サーバーからの最初の応答を待つためにも使用されます。デフォルトでは、クエリ期間が 120 秒に設定され、mysql.connect_timeout が 60 秒に設定されているため、サーバーは 60 秒後に接続を閉じ、エラーが発生します。

mysql.connect_timeout を少なくとも 120 秒に増やすことで、この問題を解決しました。これは、次のコードで実現されます:

ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300); 
ログイン後にコピー

これにより、mysql.connect_timeout が 300 秒に増加し、サーバーの応答を待っている間に接続が早まって終了することが回避されます。

以上が「wait_timeout」がはるかに長いにもかかわらず、MySQL クエリが 60 秒後にタイムアウトになるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート