亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

在tomcat下配置BoneCP連接池

系統(tǒng) 2254 0

公司的內(nèi)部服務(wù)器,一直是采用的tomcat,連接池也是采用的tomcat自帶的dbcp.最近發(fā)現(xiàn)好象連接池的數(shù)據(jù)庫(kù)連接只會(huì)增加,不會(huì)自動(dòng)釋 放.后來(lái)網(wǎng)上一查,很多人說(shuō)這是dbcp的老毛病了,雖然基本不影響使用,但畢竟占用了數(shù)據(jù)庫(kù)資源,因此,想測(cè)試一下其它連接池.首先找到有人推薦的 proxool,這個(gè)網(wǎng)上有詳細(xì)的配置方式,一配就通了.但又在網(wǎng)上看到一個(gè)快速的連接池BoneCP,決定也測(cè)試一下.結(jié)果在 http://jolbox.com/ 和網(wǎng)上都只看到在spring下的配置方式.于是自己參照dbcp的方式和tomcat文檔,弄了大半天,終于配置好了.整理一下,發(fā)出來(lái),希望能給有類似需要的人一些參考.

1.環(huán)境:jdk1.6,tomcat6.0.20,bonecp-0.6.4
2.需要的包:google-collections-1.0.jar,slf4j-api-1.5.11.jar,slf4j-log4j12-1.5.11.jar,bonecp-0.6.4.jar
3.tomcat的配置方式:
<Resource
  name="clientdb"
  auth="Container"
  type="com.jolbox.bonecp.BoneCPDataSource"
  factory="org.apache.naming.factory.BeanFactory"
  driverClass="oracle.jdbc.driver.OracleDriver"
  username=" "
  password=" "
  jdbcUrl="jdbc:oracle:thin:@127.0.0.1:1521:DB"
  idleConnectionTestPeriod="0"
  idleMaxAge="10"
  partitionCount="1"
  maxConnectionsPerPartition="5"
  minConnectionsPerPartition="1"
  connectionTestStatement=""
  initSQL="select 1 from dual"
/>
可以放到conf/server.xml文件的 <GlobalNamingResources>節(jié),也可放到<context>中
4.使用方式:
和dbcp是一樣的:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup(JNDIName);
con = ds.getConnection();
5.資源下載:
http://jolbox.com/bonecp/downloads/maven/com/jolbox/bonecp/0.6.4/bonecp-0.6.4.jar
http://google-collections.googlecode.com/files/google-collect-1.0.zip
http://www.slf4j.org/dist/slf4j-1.5.11.zip?

?

?

?BoneCP?參數(shù)詳解:

========================================?

一、BoneCP配置文件格式(bonecp-config.xml):?

      
        1
      
       xml version="1.0" encoding="UTF-8"?>  
      
2 < bonecp-config >
3 < default-config >
4
5 < property name ="..." > ...property>
6 default-config>
7 bonecp-config>

二、BoneCP主要配置參數(shù)
1.jdbcUrl
設(shè)置數(shù)據(jù)庫(kù)URL
2.username
設(shè)置數(shù)據(jù)庫(kù)用戶名
3.password
設(shè)置數(shù)據(jù)庫(kù)密碼
4.partitionCount
設(shè)置分區(qū)個(gè)數(shù)。這個(gè)參數(shù)默認(rèn)為1,建議3-4(根據(jù)特定應(yīng)用程序而定)。
為了減少鎖競(jìng)爭(zhēng)和改善性能,從當(dāng)前線程分區(qū)(thread-affinity)中獲取一個(gè)connection,
也就是這個(gè)樣子:partitions[Thread.currentThread().getId() % partitionCount]。當(dāng)擁有充足的短期(short-lived)的線程時(shí)候,這個(gè)參數(shù)設(shè)置越大,性能越好。當(dāng)超過(guò)一定的閥值時(shí),連接池的維護(hù)工作就可能對(duì)性能造成一定的負(fù)面影響(僅當(dāng)分區(qū)上的connection使用耗盡時(shí))。
5.maxConnectionsPerPartition
設(shè)置每個(gè)分區(qū)含有connection最大個(gè)數(shù)。這個(gè)參數(shù)默認(rèn)為2。如果小于2,BoneCP將設(shè)置為50。
比如:partitionCount設(shè)置為3,maxConnectionPerPartition設(shè)置為5,你就會(huì)擁有總共15個(gè)connection。
注意:BoneCP不會(huì)將這些connection一起創(chuàng)建出來(lái),而是說(shuō)在需要更多connection的時(shí)候從minConnectionsPerPartition參數(shù)開始逐步地增長(zhǎng)connection數(shù)量。
6.minConnectionsPerPartition
設(shè)置每個(gè)分區(qū)含有connection最大小個(gè)數(shù)。這個(gè)參數(shù)默認(rèn)為0。
7.acquireIncrement
設(shè)置分區(qū)中的connection增長(zhǎng)數(shù)量。這個(gè)參數(shù)默認(rèn)為1。
當(dāng)每個(gè)分區(qū)中的connection大約快用完時(shí),BoneCP動(dòng)態(tài)批量創(chuàng)建connection,
這個(gè)屬性控制一起創(chuàng)建多少個(gè)connection(不會(huì)大于maxConnectionsPerPartition)。
注意:這個(gè)配置屬于每個(gè)分區(qū)的設(shè)置。
8.poolAvailabilityThreshold
設(shè)置連接池閥值。這個(gè)參數(shù)默認(rèn)為20。如果小于0或是大于100,BoneCP將設(shè)置為20。
連接池觀察線程(PoolWatchThread)試圖為每個(gè)分區(qū)維護(hù)一定數(shù)量的可用connection。
這 個(gè)數(shù)量趨于maxConnectionPerPartition和minConnectionPerPartition之間。這個(gè)參數(shù)是以百分比的形式來(lái) 計(jì)算的。例如:設(shè)置為20,下面的條件如果成立:Free Connections / MaxConnections < poolAvailabilityThreshold;就會(huì)創(chuàng)建出新的connection。
換句話來(lái)說(shuō)連接池為每個(gè)分區(qū)至少維持20%數(shù)量的可用connection。
設(shè)置為0時(shí),每當(dāng)需要connection的時(shí)候,連接池就要重新創(chuàng)建新connection,這個(gè)時(shí)候可能導(dǎo)致應(yīng)用程序可能會(huì)為了獲得新connection而小等一會(huì)。
9.connectionTimeout
設(shè)置獲取connection超時(shí)的時(shí)間。這個(gè)參數(shù)默認(rèn)為L(zhǎng)ong.MAX_VALUE;單位:毫秒。
在調(diào)用getConnection獲取connection時(shí),獲取時(shí)間超過(guò)了這個(gè)參數(shù),就視為超時(shí)并報(bào)異常。

三、BoneCP線程配置參數(shù)
1.releaseHelperThreads
設(shè)置connection助手線程個(gè)數(shù)。這個(gè)參數(shù)默認(rèn)為3。如果小于0,BoneCP將設(shè)置為3。
設(shè)置為0時(shí),應(yīng)用程序線程被阻塞,直到連接池執(zhí)行必要地清除和回收connection,并使connection在其它線程可用。
設(shè)置大于0時(shí),連接池在每個(gè)分區(qū)中創(chuàng)建助手線程處理回收關(guān)閉后的connection(應(yīng)用程序會(huì)通過(guò)助手線程異步地將這個(gè)connection放置到一個(gè)臨時(shí)隊(duì)列中進(jìn)行處理)。
對(duì)于應(yīng)用程序在每個(gè)connection上處理大量工作時(shí)非常有用??赡軙?huì)降低運(yùn)行速度,不過(guò)在高并發(fā)的應(yīng)用中會(huì)提高性能。
2.statementReleaseHelperThreads
設(shè)置statement助手線程個(gè)數(shù)。這個(gè)參數(shù)默認(rèn)為3。如果小于0,BoneCP將設(shè)置為3。
設(shè)置為0時(shí),應(yīng)用程序線程被阻塞,直到連接池或JDBC驅(qū)動(dòng)程序關(guān)閉statement。
設(shè)置大于0時(shí),連接池會(huì)在每個(gè)分區(qū)中創(chuàng)建助理線程,異步地幫助應(yīng)用程序關(guān)閉statement當(dāng)應(yīng)用程序打開了大量的statement是非常有用的??赡軙?huì)降低運(yùn)行速度,不過(guò)在高并發(fā)的應(yīng)用中會(huì)提高性能。
3.maxConnectionAge
設(shè)置connection的存活時(shí)間。這個(gè)參數(shù)默認(rèn)為0,單位:毫秒。設(shè)置為0該功能失效。
通過(guò)ConnectionMaxAgeThread觀察每個(gè)分區(qū)中的connection,不管connection是否空閑,如果這個(gè)connection距離創(chuàng)建的時(shí)間大于這個(gè)參數(shù)就會(huì)被清除。當(dāng)前正在使用的connection不受影響,直到返回到連接池再做處理。
4.idleMaxAge
設(shè)置connection的空閑存活時(shí)間。這個(gè)參數(shù)默認(rèn)為60,單位:分鐘。設(shè)置為0該功能失效。
通過(guò)ConnectionTesterThread觀察每個(gè)分區(qū)中的connection,如果這個(gè)connection距離最后使用的時(shí)間大于這個(gè)參數(shù)就會(huì)被清除。
注意:這個(gè)參數(shù)僅和idleConnectionTestPeriod搭配使用,而且不要在這里設(shè)置任何挑釁的參數(shù)!
5.idleConnectionTestPeriod
設(shè)置測(cè)試connection的間隔時(shí)間。這個(gè)參數(shù)默認(rèn)為240,單位:分鐘。設(shè)置為0該功能失效。
通過(guò)ConnectionTesterThread觀察每個(gè)分區(qū)中的connection, 如果這個(gè)connection距離最后使用的時(shí)間大于這個(gè)參數(shù)并且距離上一次測(cè)試的時(shí)間大于這個(gè)參數(shù)就會(huì)向數(shù)據(jù)庫(kù)發(fā)送一條測(cè)試語(yǔ)句,如果執(zhí)行失敗則將這個(gè)connection清除。
注意:這個(gè)值僅和idleMaxAge搭配使用,而且不要在這里設(shè)置任何挑釁的參數(shù)!

三、BoneCP可選配置參數(shù)
1.acquireRetryAttempts
設(shè)置重新獲取連接的次數(shù)。這個(gè)參數(shù)默認(rèn)為5。
獲取某個(gè)connection失敗之后會(huì)多次嘗試重新連接,如果在這幾次還是失敗則放棄。
2.acquireRetryDelay
設(shè)置重新獲取連接的次數(shù)間隔時(shí)間。這個(gè)參數(shù)默認(rèn)為7000,單位:毫秒。如果小于等于0,BoneCP將設(shè)置為1000。
獲取connection失敗之后再次嘗試獲取connection的間隔時(shí)間。
3.lazyInit
設(shè)置連接池初始化功能。這個(gè)參數(shù)默認(rèn)為false。
設(shè)置為true,連接池將會(huì)初始化為空,直到獲取第一個(gè)connection。
4.statementsCacheSize
設(shè)置statement緩存?zhèn)€數(shù)。這個(gè)參數(shù)默認(rèn)為0。
5.disableJMX
設(shè)置是否關(guān)閉JMX功能。這個(gè)參數(shù)默認(rèn)為false。
6.poolName
設(shè)置連接池名字。用于當(dāng)作JMX和助手線程名字的后綴。

四、BoneCP調(diào)試配置參數(shù)
1.closeConnectionWatch
設(shè)置是開啟connection關(guān)閉情況監(jiān)視器功能。這個(gè)參數(shù)默認(rèn)為false。
每當(dāng)調(diào)用getConnection()時(shí),都會(huì)創(chuàng)建CloseThreadMonitor,監(jiān)視connection有沒有關(guān)閉或是關(guān)閉了兩次。警告:這個(gè)參數(shù)對(duì)連接池性能有很大的負(fù)面影響,慎用!僅在調(diào)試階段使用!
2.closeConnectionWatchTimeout
設(shè)置關(guān)閉connection監(jiān)視器(CloseThreadMonitor)持續(xù)多長(zhǎng)時(shí)間。這個(gè)參數(shù)默認(rèn)為0;單位:毫秒。僅當(dāng)closeConnectionWatch參數(shù)設(shè)置為可用時(shí),設(shè)置這個(gè)參數(shù)才會(huì)起作用。
設(shè)置為0時(shí),永遠(yuǎn)不關(guān)閉。
3.logStatementsEnabled
設(shè)置是否開啟記錄SQL語(yǔ)句功能。這個(gè)參數(shù)默認(rèn)是false。
將執(zhí)行的SQL記錄到日志里面(包括參數(shù)值)。
4.queryExecuteTimeLimit
設(shè)置執(zhí)行SQL的超時(shí)時(shí)間。這個(gè)參數(shù)默認(rèn)為0;單位:毫秒。
當(dāng)查詢語(yǔ)句執(zhí)行的時(shí)間超過(guò)這個(gè)參數(shù),執(zhí)行的情況就會(huì)被記錄到日志中。
設(shè)置為0時(shí),該功能失效。
5.disableConnectionTracking
設(shè)置是否關(guān)閉connection跟蹤功能。這個(gè)參數(shù)默認(rèn)為false。
設(shè)置為true,連接池則不會(huì)監(jiān)控connection是否嚴(yán)格的關(guān)閉;設(shè)置為false,則啟用跟蹤功能(僅追蹤通過(guò)Spring或一些事務(wù)管理等機(jī)制確保正確釋放connection并放回到連接池中)。
6.transactionRecoveryEnabled
設(shè)置事務(wù)回放功能。這個(gè)參數(shù)默認(rèn)為false。
設(shè)置為true時(shí),MemorizeTransactionProxy可以記錄所有在connection上操作的情況,當(dāng)connetion操作失敗的時(shí)候會(huì)自動(dòng)回放先前的操作,如果在回放期間還是失敗,則拋出異常。注意:這個(gè)功能會(huì)使連接池微弱地降低運(yùn)行速度。
?

在tomcat下配置BoneCP連接池


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久精品国产精品亚洲红杏 | 亚洲激情一区 | 俺去也最新网站 | 国产成人精品高清在线 | h片在线播放免费高清 | 国产一级做a爱片久久毛片a | 一区二区午夜 | 奇米影视中文字幕 | 欧美视频第一区 | 伊在人亚洲香蕉精品播放 | 一级毛片免费在线观看网站 | 二级毛片全部 | 色综合亚洲欧美在线 | 狠狠插狠狠干 | 亚洲高清综合 | 色综合久久综合网欧美综合网 | 91精品视频网 | 国产在线观看美女福利精 | 九九视频国产免 | 啪啪99久久综合精品色 | 四房婷婷在线视频播放 | 成人禁在线观看午夜亚洲 | 免费高清在线爱做视频 | 亚洲美女性视频 | 亚洲精品美女一区二区三区乱码 | 7m凹凸国产刺激在线视频 | 天天操精品 | 国产亚洲一区二区精品 | 麻豆亚洲 | 婷婷激情五月网 | 欧美夜夜骑| 夜色资源网yese321 | 成人午夜精品久久久久久久小说 | 国产成人高清在线观看播放 | 深夜在线免费视频 | 国产普通话自拍 | 热久久精品免费视频 | 国产一级黄色录像 | 欧美一级毛片欧美一级无片 | 97久久久亚洲综合久久88 | 天天操天天摸天天射 |