Tomcat 連接池調優


性能較好的Tomcat 配置文件內容

<Context>
<Resource name="jdbc/pgsql" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://10.14.196.190:5432/foo"
username="sdbadmin"
password="sdbadmin"
factory="org.apache.tomcat.jdbc.pool..DataSourceFactory"
maxActive="600"
maxIdle="600"
minIdle="600"
initialSize="400"
timeBetweenEvictionRunsMillis="30000"
minEvictableIdleTimeMillis="1800000"
removeAbandoned="true"
removeAbandonedTimeout="180"
testOnBorrow="true"
maxWait="300000"
logAbandoned="true"
testOnReturn="false"
validationQuery="SELECT 1"
/> 

<ResourceLink global="jdbc/pgsql"
name="jdbc/pgsqlDB"
type="javax.sql.DataSource"
/>

</Context>

 

Resource 重要參數說明:
factory 使用哪種連接池的庫
maxActive 連接池的最大連接上限
maxIdle 最大空閑連接數,空閑的連接如果超過 minEvictableIdleTimeMillis 參數設置的值,空閑連接將被釋放
minIdle 最小空閑連接數
initialSize 初始化連接數
timeBetweenEvictionRunsMillis 多長時間去檢查一次連接池的空閑連接,並且發現空閑連接的空閑時間超過了 minEvictableIdleTimeMillis 設置時間后,直接將空閑連接斷開,直到空閑連接數為 minIdle 數為止
minEvictableIdleTimeMillis 這個參數要和 timeBetweenEvictionRunsMillis 參數混合使用
removeAbandoned 是否清理超過 removeAbandonedTimeout 設置時間的活動連接
removeAbandonedTimeout 活動連接的最大空閑時間
testOnBorrow 從連接池中借出連接前,是否對該連接進行正確性校驗,連接正常才會出池,如果連接已經失效,將會把失效連接清除,並且重新申請新的連接。該參數可以保證成功借出的連接都是處於活動狀態。該參數必須要和 validationQuery 參數配合使用,如果 validationQuery 參數為空字符串,該參數將不生效。
maxWait 連接池用完后,申請新連接的等待時間
logAbandoned 連接池回收空閑的活動連接時是否打印日志
testOnReturn 將連接返回連接池時,是否對該連接進行正確性校驗,如果連接失效,將清除該連接,如果連接正常,則回池。該參數必須和 validationQuery 參數配合使用。默認值為 false
validationQuery 探測連接健壯性的模板SQL

 

 

老的tomcat 連接池的配置,性能不好

<Context>
<Resource name="jdbc/pgsql" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://10.14.196.190:5432/foo"
username="sdbadmin"
password="sdbadmin"
factory="org.apache.tomcat.jdbc.pool..DataSourceFactory"
maxActive="1000"
maxIdle="-1"
minIdle="600"
initialSize="500"
timeBetweenEvictionRunsMillis="0"
removeAbandoned="true"
removeAbandonedTimeout="1000"
/> 

<ResourceLink global="jdbc/pgsql"
name="jdbc/pgsqlDB"
type="javax.sql.DataSource"
/>
</Context>

 

該配置的問題
maxIdle 設置-1 是錯誤,tomcat 會報告該參數大於maxActive ,然后設置為與 maxActive 相同的值
timeBetweenEvictionRunsMillis 由於沒有設置 validationQuery 參數,所以不生效
removeAbandoned 由於沒有設置 validationQuery 參數,所以不生效
removeAbandonedTimeout 由於沒有設置 validationQuery 參數,所以不生效

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM