使用java連接池心得

    公司裏用的連接池都是自己寫好了,封裝起來的,做大型項目的時候,非常有用,但近段時間總是發現數據庫連接過多,造成數據庫連接壓力過大,網站無法訪問等嚴重後果,我們做的網站主要是用於移動公司的後臺,經常會處理很大"羣集任務",找了很長時間,發現是程序裏有很多打開的連接沒有關閉,放回到連接池裏去,造成連接數不夠的問題.

            後來上網上找了這個PROXOOL連接池插件,發現有自動KILL不活動的連接的功能.而且有VIEW方式查看連接情況,而且很多數據都是配置完成。決定在項目中試驗一下。

          官方網址:http://proxool.sourceforge.net/    當前版本:proxool-0.9.0RC2

            1、下載proxool 地址:http://proxool.sourceforge.net/
            2、解壓縮proxool-0.9.0RC2.zip,拷貝lib/proxool-0.9.0RC2.jar到web-info/lib      拷貝jdbc驅動到web-info/lib
            3、在web-info下建立文件:proxool.xml
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
  <proxool>
    <alias>Test</alias>
    <driver-url>jdbc:oracle:thin:@192.168.10.160:1521:orc1</driver-url>
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <driver-properties>
      <property name="user" value="test"/>
      <property name="password" value="testpass"/>
    </driver-properties>
    <maximum-connection-count>10</maximum-connection-count>
    <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
  </proxool> 
</something-else-entirely>
            4、在web.xml裏新增如下:

<servlet>
      <servlet-name>proxoolServletConfigurator</servlet-name>
    <servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
     <init-param>
       <param-name>xmlFile</param-name>
       <param-value>WEB-INF/config/proxool.xml</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
   </servlet>
<!-- proxool提供的管理監控工具,可查看當前數據庫連接情況。如果運行不成功,請刪除本行 -->
<servlet>
    <servlet-name>Admin</servlet-name>
      <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
   </servlet>
   <servlet-mapping>
    <servlet-name>Admin</servlet-name>
    <url-pattern>/admin</url-pattern>
   </servlet-mapping>

 5、在調用數據庫連接代碼:
       Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
       Connection conn = DriverManager.getConnection("proxool.Develop");

     6、利用proxool監控工具查看數據庫運行狀態。地址:./admin


      以上配置是採用的XML文件方式,也可以採用properties配置方式:

proxool.alias=Test
proxool.driver-class=oracle.jdbc.driver.OracleDriver
proxool.driver-url=jdbc:oracle:thin:@192.168.10.160:1521:orcl
proxool.user=test
proxool.password=testpass
proxool.maximum-connection-count=20
proxool.prototype-count=4
proxool.house-keeping-test-sql=select sysdate from DUAL
proxool.verbose=true
proxool.statistics=10s,1m,1d
proxool.statistics-log-level=ERROR


<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
 
 <init-param>
   <param-name>propertyFile</param-name>
   <param-value>WEB-INF/config/Proxool.properties</param-value>
 </init-param>
 <load-on-startup>1</load-on-startup>
</servlet>


在調用數據庫連接代碼
   Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
   Connection conn = DriverManager.getConnection("proxool.Test");


還有一些配置屬性:
maximum-connection-lifetime   最大連接生命週期  默認值:4小時
maximum-active-time:     最大活動時間   默認值:5分鐘
maximum-connection-count   最大連接數    默認值:15個
minimum-connection-count   最小連接數    默認值:5個

在用admin調用的時候,可以查看這個WEB應用所有的連接數的狀態,雖然這個插件可以把不活動的連接自動放到連接池裏,但是如果連接數過多,而不及時KILL的話,對網站的連接是有很大的影響的,建議還是手工KILL。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章