首頁  >  文章  >  資料庫  >  c3p0所造成的死鎖如何解決

c3p0所造成的死鎖如何解決

一个新手
一个新手原創
2017-09-08 10:54:092126瀏覽

程式碼測試本地無誤,於是放到外網伺服器測試,出現了這樣的錯誤

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!

看到這個頭都大了,怎麼辦呢?為什麼出現這樣的情況?

我的答案是:

#因為資料庫的連接數是有限的,每次應用啟動C3p0都會佔用資料庫的連線來填入C3p0的連線池,而當資料庫的資源被佔光時就會因為無法取得共用資源而報死鎖。

更改對應設定檔裡面的最大連接數和初始化連接數:

未改前:

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

已修改之後:

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

重新部署運行,ok!

#

以上是c3p0所造成的死鎖如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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