我正在開發一個使用C#和MySql的應用程序(存儲過程)。在運行該應用程序一段時間後,它顯示連接太多。然後我使用命令SHOW STATUS WHERE variable_name = 'Threads_connected';
和SHOW PROCESSLIST;
來調試問題。似乎每次我在我的應用程序上運行任何操作時,mysql會創建新線程,並將線程標記爲睡眠。此外,線程沒有按時關閉。我發現了一個解決方案,即設置mysql環境變量如下。mysql中連接錯誤太多
interactive_timeout=180
wait_timeout=180
- 這個解決辦法有,因爲它會自動殺死連接的應用程序產生任何影響?如果數據從數據庫獲取時間有點長,會發生什麼?
- 我預計一次有1000個流量巨大的流量。那麼mysql中的最大連接數應該是多少?這會降低mysql的性能嗎?
[注:有一個在我的應用程序沒有問題,因爲我已經關閉了所有的MySQL連接]
在此先感謝。
你的筆記聽起來像你實際上在你的連接上調用'Close'。你有沒有想過使用塊?這比你自己處理所有可能的異常情況要容易得多。 – nvoigt 2014-09-23 05:41:48
是的,我正在使用'Close'。如果沒有任何作用,我會試一試。 – Redone 2014-09-23 05:43:46
手動調用'Close'容易出錯,因爲異常或正常流量控制可能會繞過您的關閉呼叫。命令和讀取器也可以與'使用'塊一起使用,所以當發生異常時你不需要關注資源管理。 – nvoigt 2014-09-23 05:45:41