天天看點

bbossgroups持久層架構連結池配置優化政策之一 空閑連結回收配置

bbossgroups持久層架構連結池配置優化政策之一 空閑連結回收配置

poolman.xml檔案中和空閑連結回收相關的配置項如下:

<initialConnections>2</initialConnections>
    
    <minimumSize>2</minimumSize>
    <maximumSize>10</maximumSize>
    <maximumSoft>false</maximumSoft>
      
<!--機關:秒-->
   	<skimmerFrequency>120000</skimmerFrequency>
	<!--機關:秒
	空閑連結回收時間,空閑時間超過指定的值時,将被回收
	-->
	<connectionTimeout>240000</connectionTimeout>
	      

現在對這些配置項進行說明:

1.initialConnections是連接配接池初始化的資料庫連接配接數,可根據需要進行配置,這裡配置為2

2.minimumSize最小空閑連結數,預設為0,有兩種配置建議:

  配為maximumSize的一半,如果maximumSize為200則minimumSize配為100

  或者和initialConnections保持一緻

minimumSize最好不要設定為0,免得池中的空閑連接配接被全部回收後,不再保持有空閑連接配接,也就是說為0時可能會造成連接配接池為空,進而失去連接配接池的意義。

3.maximumSize-連接配接池中允許的最大連結數,連接配接數達到這個數值後,如果maximumSoft為false時,連接配接池将不再允許池中的連接配接增長,如果為true将會增長連接配接數,增長的連結數是否回收以及什麼時候回收依賴于skimmerFrequency、connectionTimeout參數的配置

4.maximumSoft-當連接配接池中的連接配接個數達到maximumSize後,是否允許再建立新的connection——true:允許,預設值 ;false:不允許 ,一般如果應用程式中不存在連結洩露的情況下,設定為false。

5.skimmerFrequency-回收空閑連結操作間隔時間,秒(s)為機關,這個時間不能太短,否則檢測頻率太高,影響系統性能,我們一般設定為120000秒

6.connectionTimeout-機關:秒; 空閑連結回收時間,空閑時間超過指定的值時,将被回收;預設為1200秒,我們設定為240000秒。

配置建議:minimumSize和initialConnections保持一緻,如果initialConnections為0,會導緻連接配接池向資料庫擷取實體連結的頻率變高,進而導緻降低系統性能(尤其是像mysql,擷取連結的代價非常高,因為mysql會進行dns解析,會很慢,除非mysql關閉了該機制)。

maximumSoft為false,skimmerFrequency為120000秒,connectionTimeout為240000秒,這樣配置也就是為了避免過渡頻繁地回收空閑連結和初始化最小連結數,進而導緻降低系統性能

以上建議純屬個人想法,如有不妥,歡迎批評指點,感興趣的朋友可以參考我的另一篇文章:

bbosspersistent 性能初探