我有一個Spring MVC + Mysql(JDBC 4)+ c3p0 0.9.2項目。c3p0 maxIdleTime與mysql的wait_timeout相同嗎?
在c3p0 maxIdleTime
中,值爲240(即4分鐘)和wait_timeout
,在Mysql的my.ini中爲30秒。
根據C3P0
maxIdleTime: (默認值:0) 秒一個連接可以保持彙集但被丟棄之前未使用的。零意味着空閒連接永不過期。
據到MySQL
WAIT_TIMEOUT:活動服務器等待關閉前一個 非交互連接上的秒數。
現在,我有這方面的一些douts:(一些答案是衆所周知的我,只是wated以確保我正確與否)
- 未使用的連接是指在
sleep
狀態的連接根據mysql(?) - 什麼是交互式和非交互式連接?
- 未使用的連接和非交互連接是否相同?因爲我的DBA設置了
wait_timeout
到30秒(他通過觀察數據庫服務器來達到這個值,因此在睡眠模式下連接的數量非常少),這意味着連接可以在sleep
模式中持續30秒,之後它將被關閉,但是在另一手c3p0的maxIdleTime
設置爲240秒,所以這個maxIdleTime
設置在這種情況下發揮作用。 - 什麼是
interactive_timeout
?
在休眠模式下的連接是最有可能的閒置的連接坐在你的游泳池裏。他們不應該太快關閉,因爲讓你的游泳池在下一次請求時重新創建它們是非常昂貴的。爲什麼你的DBA建議將wait_timeout設置爲30秒? – flup
@flup,因爲在負載測試中,我觀察到'show full processlist'顯示'在DB = maxPoolSize'中的連接數量,並且我一直在獲取'連接無法從底層數據庫!獲得'異常。我發佈了這個問題請閱讀更多和一個http://stackoverflow.com/questions/24451317/why-sleep-mode-coonections-are-not-reused-by-c3p0 – Amogh