明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

c3p0引起的死鎖怎么處理

[摘要]代碼測試本地?zé)o誤,于是放到外網(wǎng)服務(wù)器測試,出現(xiàn)了這樣的錯誤com.mchange.v2.async.ThreadPoolAsynchronousRunner -46651078 [Timer-18]...
代碼測試本地?zé)o誤,于是放到外網(wǎng)服務(wù)器測試,出現(xiàn)了這樣的錯誤

com.mchange.v2.async.ThreadPoolAsynchronousRunner -466510
78 [Timer-18] WARN  com.mchange.v2.async.ThreadPoolAsynchronousRunner  - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1c17bd4 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!

看到這個頭都大了,怎么辦呢?為什么出現(xiàn)這樣的情況?

我的答案是:

因為數(shù)據(jù)庫的連接數(shù)是有限的,每次應(yīng)用啟動C3p0都會占用數(shù)據(jù)庫的連接來填充C3p0的連接池,而當(dāng)數(shù)據(jù)庫的資源被占光時就會因為無法獲得共享資源而報死鎖。

更改對應(yīng)配置文件里面的最大連接數(shù)和初始化連接數(shù):

未改前:

<property name="maxPoolSize" value="100" />  
<property name="initialPoolSize" value="2" />

修改之后:

<property name="maxPoolSize" value="1" />  
<property name="initialPoolSize" value="1" />

重新部署運行,ok!

以上就是c3p0引起的死鎖如何解決 的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。