溫馨提示:您的每一次轉(zhuǎn)載,體現(xiàn)了我寫此文的意義!!!煩請(qǐng)您在轉(zhuǎn)載時(shí)注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          雪山飛鵠

          溫馨提示:您的每一次轉(zhuǎn)載,體現(xiàn)了我寫此文的意義!!!煩請(qǐng)您在轉(zhuǎn)載時(shí)注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks

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

          <?xml version="1.0" encoding="UTF-8"?>
          <bonecp-config>
            
          <default-config>
             
          <!--  -->
           
          <property name=""></property>
            
          </default-config> 
          </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有沒(méi)有關(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)行速度。
          注:本文轉(zhuǎn)自http://chirs1012f.javaeye.com/blog/805261
          posted on 2011-03-16 14:51 雪山飛鵠 閱讀(4195) 評(píng)論(2)  編輯  收藏 所屬分類: javasedatabase

          Feedback

          # re: BoneCP學(xué)習(xí)筆記——配置參數(shù)[未登錄](méi) 2011-03-21 10:40 pizzazz
          先收藏了,最近遇到用bonecp取大數(shù)量timeout的問(wèn)題,不知道怎么解決
          只好用dbcp了  回復(fù)  更多評(píng)論
            

          # re: BoneCP學(xué)習(xí)筆記——配置參數(shù)[未登錄](méi) 2011-03-29 10:43 西瓜
          maxConnectionAge 這個(gè)參數(shù)的單位是秒!  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 武川县| 武汉市| 定西市| 平南县| 宜都市| 浙江省| 台湾省| 广饶县| 峨边| 萨嘎县| 财经| 利辛县| 和政县| 霍邱县| 茌平县| 商洛市| 奉贤区| 绩溪县| 大丰市| 宁南县| 湄潭县| 融水| 呼图壁县| 凌海市| 绥滨县| 宁国市| 探索| 嘉禾县| 义马市| 乌兰浩特市| 双桥区| 遂川县| 娄烦县| 织金县| 江山市| 保山市| 阿拉善盟| 梁河县| 油尖旺区| 吉首市| 宾川县|