關(guān)于C3P0鏈接死鎖引入的一些配置

? ? ? 已經(jīng)一個(gè)多月沒有寫東西了,不過最近確實(shí)很忙。前兩天在線上碰到一個(gè)C3P0的鏈接死鎖的異常剃诅,話說這個(gè)上古神物 ,我已經(jīng)是很久不碰了空骚。先貼異常


異常截圖

"apparent deadlocks":名詞解釋是說c3p0拿到鏈接之后纺讲,最終使用之后沒有返回到pool,導(dǎo)致死鏈檢測(cè)失敗。經(jīng)過在stack Overflow檢索,https://stackoverflow.com/questions/3730844/c3p0-apparent-deadlock-when-the-threads-are-all-empty.發(fā)現(xiàn)增加一個(gè)statementCacheNumDeferredCloseThreads該參數(shù)的定義囤屹,就可以避免這個(gè)問題熬甚。

經(jīng)過查看官方文檔:http://www.mchange.com/projects/c3p0/#statementCacheNumDeferredCloseThreads


解釋:如果把該值設(shè)為超過1,statement的緩存就會(huì)自動(dòng)跟蹤當(dāng)前可用的connections,如果沒有再用肋坚,就會(huì)自動(dòng)銷毀掉乡括。如果需要另外的線程來專門銷毀緩存的statement,則還需要設(shè)置maxStatements與maxStatementsPerConnection。

再貼一個(gè)官方的說明:

Configuring Statement Pooling

c3p0 implements transparent PreparedStatement pooling as defined by the JDBC spec. Under some circumstances, statement pooling can dramatically improve application performance. Under other circumstances, the overhead of statement pooling can slightly harm performance. Whether and how much statement pooling will help depends on how much parsing, planning, and optimizing of queries your databases does when the statements are prepared. Databases (and JDBC drivers) vary widely in this respect. It's a good idea to benchmark your application with and without statement pooling to see if and how much it helps.

You configure statement pooling in c3p0 via the following configuration parameters:

maxStatements

maxStatementsPerConnection

statementCacheNumDeferredCloseThreads

maxStatementsis JDBC's standard parameter for controlling statement pooling.maxStatementsdefines the total numberPreparedStatementsa DataSource will cache. The pool will destroy the least-recently-used PreparedStatement when it hits this limit. This sounds simple, but it's actually a strange approach, because cached statements conceptually belong to individual Connections; they are not global resources. To figure out a size formaxStatementsthat does not "churn" cached statements, you need to consider the number offrequently usedPreparedStatements in your application,and multiply that by the number of Connections you expect in the pool (maxPoolSizein a busy application).

maxStatementsPerConnectionis a non-standard configuration parameter that makes a bit more sense conceptually. It defines how many statements each pooled Connection is allowed to own. You can set this to a bit more than the number ofPreparedStatementsyour applicationfrequentlyuses, to avoid churning.

If either of these parameters are greater than zero, statement pooling will be enabled. If both parameters are greater than zero, both limits will be enforced. If only one is greater than zero, statement pooling will be enabled, but only one limit will be enforced.

大概意思就是這兩個(gè)智厌,有一個(gè)值如果大于0诲泌,c3p0的statement pool就會(huì)發(fā)生作用。

以上所有的配置都是基于c3p0的最新版本铣鹏。PS一下敷扫,還是2015年的JAR。


通過引入最新的C3P0包诚卸,另外增加了兩段配置葵第,線上觀察兩天,問題解決合溺。


最后打個(gè)小廣告卒密,JAVA世界最快的JDBC連接池,非HikariCP莫屬棠赛。已經(jīng)甩c3p0好幾個(gè)街角哮奇,有圖有真像。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末睛约,一起剝皮案震驚了整個(gè)濱河市鼎俘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辩涝,老刑警劉巖而芥,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異膀值,居然都是意外死亡棍丐,警方通過查閱死者的電腦和手機(jī)误辑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歌逢,“玉大人巾钉,你說我怎么就攤上這事∶匕福” “怎么了砰苍?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長阱高。 經(jīng)常有香客問我赚导,道長,這世上最難降的妖魔是什么赤惊? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任吼旧,我火速辦了婚禮,結(jié)果婚禮上未舟,老公的妹妹穿的比我還像新娘圈暗。我一直安慰自己,他們只是感情好裕膀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布员串。 她就那樣靜靜地躺著,像睡著了一般昼扛。 火紅的嫁衣襯著肌膚如雪寸齐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天抄谐,我揣著相機(jī)與錄音渺鹦,去河邊找鬼。 笑死斯稳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的迹恐。 我是一名探鬼主播挣惰,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼殴边!你這毒婦竟也來了憎茂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤锤岸,失蹤者是張志新(化名)和其女友劉穎竖幔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體是偷,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拳氢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年募逞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馋评。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡放接,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出留特,到底是詐尸還是另有隱情纠脾,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布蜕青,位于F島的核電站苟蹈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏右核。R本人自食惡果不足惜慧脱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蒙兰。 院中可真熱鬧磷瘤,春花似錦、人聲如沸搜变。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挠他。三九已至扳抽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間殖侵,已是汗流浹背贸呢。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拢军,地道東北人楞陷。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像茉唉,于是被迫代替她去往敵國和親固蛾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,442評(píng)論 0 23
  • PLEASE READ THE FOLLOWING APPLE DEVELOPER PROGRAM LICENSE...
    念念不忘的閱讀 13,447評(píng)論 5 6
  • 那年度陆,你從北京到陽原艾凯,274公里。 很普通的日子我們偶遇在那個(gè)普通的縣城懂傀。世界上有太多無法言說的幸運(yùn)趾诗,我們稱之...
    金梓Penny閱讀 551評(píng)論 0 1
  • 有多少勉強(qiáng)在一起的人,是因?yàn)椴桓市摹?卻也因此蹉跎了一生蹬蚁。 繁花落盡恃泪、你已走遠(yuǎn)郑兴。 來時(shí)漫漫長路,與我擦肩悟泵。 卻沒能...
    費(fèi)瘋風(fēng)閱讀 181評(píng)論 0 0
  • 人和人的相處禁筏,是一門學(xué)問,要做好點(diǎn)衡招,真的不容易篱昔。 離得太遠(yuǎn)了,關(guān)系就淡了始腾;可靠得太近了州刽,恩恩怨怨就來了。不管是家人...
    趙肅江閱讀 535評(píng)論 0 0