首頁 >後端開發 >php教程 >為什麼以前可以成功執行的 MySQL 查詢現在會在 60 秒後逾時?

為什麼以前可以成功執行的 MySQL 查詢現在會在 60 秒後逾時?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-18 22:12:03578瀏覽

Why does a MySQL query now time out after 60 seconds when it used to execute successfully?

MySQL 伺服器60 秒逾時問題

本文探討了先前成功的MySQL 查詢現在在60 秒後逾時的問題,顯示錯誤訊息「MySQL 伺服器已消失」。雖然查詢本身很慢,但它一直是夜間工作的一部分,直到最近才出現問題。

問題症狀

  • 查詢在超時之前恰好停滯 60 秒。
  • 透過執行語句「SELECT SLEEP(120);」可以重現問題。來自 PHP。
  • 從 MySQL 用戶端執行時,相同的語句執行成功。
  • 將「wait_timeout」變數調整為 28800 秒並不能解決問題。

可能的原因

  • CPU 或記憶體等有限資源不是可能的原因,因為問題總是在 60 秒恰好超時。
  • A潛在原因可能是設定不正確,而不是資源限制。

故障排除

預設 PHP 設定「mysql.connect_timeout」被發現是根源的問題。此設定不僅控制連線逾時,還控制伺服器初始回應的等待時間。

解決方案

若要增加等待時間,可以使用下列PHP 配置使用:

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

此變更將等待時間增加到指定值,使查詢能夠在不逾時的情況下完成。

以上是為什麼以前可以成功執行的 MySQL 查詢現在會在 60 秒後逾時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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