2011-02-27 50 views
2

客戶端正在使用PHP連接到MySQL。 PHP腳本和MySQL數據庫位於2個不同的Linux服務器上。他抱怨數據庫連接正在丟失或超時,並要求我看一看。如何判斷是否有任何MySQL連接已被刪除或超時?

有沒有在MySQL的任何地方,可以讓我看看,有多少連接斷開或超時?我看着慢查詢日誌,並沒有看到任何東西。

如何診斷這種丟棄/任何建議超時數據庫連接問題?

感謝

回答

5

可以肯定監視

Aborted_clients 

狀態變量(即,具有SHOW GLOBAL STATUS)和見連接超時。

然而,這個檢測最好的地方是在客戶端。假設你有適當的錯誤處理和日誌記錄在客戶端,你通常會看到着名的「服務器已經消失」的錯誤。

當你的應用程序是用PHP,有一個可能性,它沒有適當的錯誤處理/記錄。你應該解決這個問題。


這方面的一個常見的原因是持久連接的從Apache prefork的服務器的濫用。由於Apache prefork服務器通常在很長一段時間內不會執行任何操作,但持續連接可以在每個進程中保持打開狀態,因此連接可能最終處於空閒狀態的時間太長,從而造成「早上錯誤」。

這種情況的解決方法是簡單 - 只是關閉持久連接。幾乎在所有情況下,這都是不恰當的悲觀主義。

+0

用於連接2002的+1 - 連接與Aborted_clients超時 – 2012-05-19 17:57:17

相關問題