隨筆-35  評論-33  文章-0  trackbacks-0
            2016年7月15日

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



          異常截圖

          "apparent deadlocks":名詞解釋是說c3p0拿到鏈接之后,最終使用之后沒有返回到pool,導(dǎo)致死鏈檢測失敗。經(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è)街角,有圖有真像。



          posted @ 2017-11-10 15:25 alexcai 閱讀(1804) | 評論 (0)編輯 收藏
               摘要: 在word的處理之中,文字,各種類型的圖片,最復(fù)雜的公式,之前編寫的API基本都覆蓋了。不過,昨天在做一個(gè)文檔測試時(shí),發(fā)現(xiàn)表格沒有能很好的處理。  閱讀全文
          posted @ 2017-08-25 15:54 alexcai 閱讀(763) | 評論 (0)編輯 收藏
               摘要: HDFS和MapReduce是Hadoop的兩大核心,除此之外Hbase、Hive這兩個(gè)核心工具也隨著Hadoop發(fā)展變得越來越重要。今天我們只初步的看看HDFS.  閱讀全文
          posted @ 2017-07-24 10:35 alexcai 閱讀(667) | 評論 (0)編輯 收藏
               摘要: 使用thrift已經(jīng)有段時(shí)間了,目前基本是clien+server的方式,負(fù)載是通過nginx來處理。這種處理方式有兩個(gè)比較大的弊端:  閱讀全文
          posted @ 2017-06-29 16:39 alexcai 閱讀(886) | 評論 (0)編輯 收藏
              www.taggerin.com,主要處理日常文檔的在線編輯,以及與Markdown,PDF,html等格式的雙向轉(zhuǎn)換.聽說內(nèi)測版本已經(jīng)發(fā)布。真正的文檔在線編輯與預(yù)覽。?
          posted @ 2017-06-02 09:45 alexcai 閱讀(715) | 評論 (0)編輯 收藏
               摘要: 一般的業(yè)務(wù)開發(fā),不會(huì)涉及到多種數(shù)據(jù)庫類型的操作。因?yàn)椋瑹o論是對于開發(fā),還是運(yùn)維,成本都是非常高的。如果是ORACLE數(shù)據(jù)庫到MYSQL的數(shù)據(jù)備份,目前我所了解的開源解決方案有2種:  閱讀全文
          posted @ 2016-12-15 13:33 alexcai 閱讀(1242) | 評論 (0)編輯 收藏
               摘要: 作為日常支付業(yè)務(wù),微信的接入逐漸進(jìn)入了大家的視野。今天以PC端接入微信支付的基本流程來說明。  閱讀全文
          posted @ 2016-07-26 11:59 alexcai 閱讀(1450) | 評論 (2)編輯 收藏
               摘要: 在WORD里面編輯公式,目前是有兩種方法。  閱讀全文
          posted @ 2016-07-15 08:30 alexcai 閱讀(2203) | 評論 (1)編輯 收藏
          <2016年7月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(2)

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 定州市| 新邵县| 海林市| 浑源县| 道孚县| 七台河市| 云和县| 安康市| 吉林市| 开江县| 景谷| 白山市| 永善县| 兴化市| 延津县| 乐昌市| 万山特区| 乌恰县| 清涧县| 中山市| 水富县| 衡南县| 英德市| 长汀县| 承德县| 永仁县| 昌乐县| 阿瓦提县| 保亭| 武平县| 深水埗区| 钟祥市| 广宗县| 大方县| 健康| 漯河市| 惠东县| 北辰区| 阜新市| 渑池县| 临沭县|