c3p0 を使用して、MySQL へのデータベース接続を管理しています。問題は、一部の接続が永久に保持されていることです。1000 接続の制限がありますが、なんらかの理由で、1200 の開いている接続があります。それを調査するために、Tomcat サーバー シェルで次のコマンドを実行します。
netstat -n |grep 3306|grep ESTABILISHED|wc -l
そしてそれは1200を返します
ここにc3p0構成がありますcontext.xml
<Resource name="jdbc/xxxx" auth="Container"
user="xxxxxx"
password="xxxxx"
driverClass="com.mysql.jdbc.Driver"
jdbcUrl ="jdbc:mysql://xxxx:3306/xxx"
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
maxPoolSize="1000"
minPoolSize="200"
numHelperThreads="10"
acquireIncrement="50"
maxStatementsPerConnection="0"
idleConnectionTestPeriod="200"
maxIdleTime = "1000"
maxIdleTimeExcessConnections = "180"
maxStatements="200"
unreturnedConnectionTimeout="10"
debugUnreturnedConnectionStackTraces="true"
/>
プールの最大サイズが 1000 の場合、どのようにして 1200 の接続を確立できますか? 私のMySQLサーバーはで構成されています
interactive_timeout 28800
wait_timeout 1300
OBS: このアプリケーションでは休止状態を使用していません (いくつかのクラスでのみ)。ほとんどの接続は、純粋な JDBC コードを介して行われます。