酒醒無夢

          我在幻象的迷留界徘徊,誰來指引幻象的輪回?

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            8 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
          1 問題描述
          Web程序在tomcat剛開始運行時速度很快,但過一段時間后發現速度變得很慢。
          檢查日志輸出,發現異常如下:
          org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool exhausted, cause:
          java.util.NoSuchElementException: Timeout waiting for idle object

          2 問題解決
          tomcat 的數據源定義提供了三個參數:
          a. 如果設為true則tomcat自動檢查恢復重新利用,沒有正常關閉的Connection.(默認是false)
          <parameter>
          <name>removeAbandoned</name>
          <value>true</value>
          </parameter>
          b. 設定連接在多少秒內被認為是放棄的連接,即可進行恢復利用。
          <parameter>
          <name>removeAbandonedTimeout</name>
          <value>60</value>
          </parameter>
          c. 輸出回收的日志,可以詳細打印出異常從而發現是在那里發生了泄漏
          <parameter>
          <name>logAbandoned</name>
          <value>true</value>
          </parameter>

          關于回收日志,大致上是以 dbcp object by the following code was never closed 形式開頭。
          此外 擴大maxActive的值,也有一定幫助。
          配置好連接池的參數,問題解決。還需要注意的是,代碼中關于數據庫查詢部分的寫法。

          posted on 2010-05-25 13:26 Rock N' Java 閱讀(231) 評論(0)  編輯  收藏 所屬分類: Programming
          主站蜘蛛池模板: 黄浦区| 竹山县| 商都县| 博白县| 车险| 汽车| 阿克苏市| 通许县| 灯塔市| 益阳市| 五寨县| 岢岚县| 青浦区| 金寨县| 乐至县| 三穗县| 惠水县| 福泉市| 张北县| 武穴市| 金华市| 高要市| 左贡县| SHOW| 永春县| 根河市| 固安县| 榕江县| 深州市| 吉林省| 凤山市| 溧水县| 汽车| 新竹县| 陇西县| 岱山县| 林周县| 清丰县| 沙田区| 武宣县| 宝兴县|