首頁 >資料庫 >mysql教程 >為什麼我的 MySQL 查詢在 60 秒後逾時,儘管「wait_timeout」要高得多?

為什麼我的 MySQL 查詢在 60 秒後逾時,儘管「wait_timeout」要高得多?

Susan Sarandon
Susan Sarandon原創
2024-11-27 05:07:13317瀏覽

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-community
  • MySql 5.1.36-community
MySql 5.1.36-community

MySql 5.1.36-community

MySql 5.1.36-community

MySql 5.1.36-community

MySql 5.1.36-community

5.3

分析
ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300); 

檢查 SHOW VARIABLES 輸出後,發現 wait_timeout 已設定為 28800(480 分鐘),但錯誤仍存在。這表示 wait_timeout 不是問題所在。 解決方案問題的原因是 PHP 選項 mysql.connect_timeout。此選項不僅用於連接逾時,還用於等待來自伺服器的第一個回應。由於查詢持續時間設定為 120 秒,而 mysql.connect_timeout 預設為 60 秒,因此伺服器在 60 秒後關閉連接,導致錯誤。 透過將 mysql.connect_timeout 增加到至少 120 秒,解決了此問題。這透過以下程式碼實現:這將 mysql.connect_timeout 增加到 300 秒,避免了在等待伺服器回應時 premature 關閉連線。

以上是為什麼我的 MySQL 查詢在 60 秒後逾時,儘管「wait_timeout」要高得多?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn