我試圖找出一個問題,我們在使用Tomcat 6.0.37和MySQL 5.5的高流量站點的封面下。測試負載是200個Tomcat併發連接 - 所有連接到同一個URL,並且所有連接都到達數據庫。Apache Commons DBCP奇怪的行爲
要做我們的連接池,我們使用嵌入式的tomcat-dbcp包。下面是我們使用的資源配置:
<Resource name="jdbc/appDataSource" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/myapp?autoReconnect=true&characterEncoding=UTF-8"
username="root"
password="*****"
testOnBorrow="true"
maxWait="5000"
maxIdle="1"
maxActive="30"
validationQuery="SELECT 1"
validationInterval="30000"
timeBetweenEvictionRunsMillis="30000"
logAbandoned="true"
removeAbandoned="true"
removeAbandonedTimeout="60"
/>
當我運行在該網站上我看到了連接池失去聯繫很廣泛一些測試流量。大約一分鐘後,我已經有超過10000次的MySQL連接嘗試,並且連接池從未連接過超過20個連接 - 所有連接都幾乎立即關閉。
我試圖切換到Apache下議院通過我的配置將它添加到lib文件夾和包括財產
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
,但它給了我同樣的結果。
我試圖切換到C3P0和BoneCP這實際上做得很不錯,我看到了正在舉行的30個連接的最大值 - 關於MySQL
我使用Apache的連接池也試過沒有新的或掉線Tomcat的7(只是爲了它的緣故),而且還具有以下配置工作得很好:
<Resource name="jdbc/appDataSource" auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/myapp?autoReconnect=true&characterEncoding=UTF-8"
username="root"
password="******"
maxIdle="1"
maxActive="30"
validationQuery="SELECT 1"
validationInterval="30000"
timeBetweenEvictionRunsMillis="30000"
logAbandoned="true"
removeAbandoned="true"
removeAbandonedTimeout="60"
/>
我不知道是否有什麼東西真的錯了與Apache下議院DBCP,它並沒有在最簡單的情況下,甚至工作?有沒有解釋所有這一切?
您是否發現溶劑?我有同樣的問題。 – Jens