我有一个在 Tomcat 7.0.37 上运行的 Java Web 应用程序(带有 JSP 页面的 servlet),该应用程序配置了一个 MySQL 数据库池,具有以下配置(在 context.xml 文件中设置):
<Context antiJARLocking="true" path="/">
<Resource
name="jdbc/ledenplatform"
auth="Container"
type="javax.sql.DataSource"
removeAbandonedTimeout="60"
removeAbandoned="false"
logAbandoned="false"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
initialSize="20"
maxActive="100"
minIdle="20"
maxIdle="50"
maxWait="10000"
suspectTimeout="60"
username="ledenplatform"
password="******************"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://ledenplatform.blauwe-regen.be:3306/ledenplatform"
timeBetweenEvictionRunsMillis="30000"
minEvictableIdleTimeMillis="60000"
testWhileIdle="true"
testOnReturn="false"
validationQuery="SELECT 1"
validationInterval="30000"
testOnBorrow="true" />
</Context>
在一些未知的时间/事件之后,池慢慢地空了,我不知道是什么事件或数据库操作导致了这种情况。
通常,我所有的 DAO 类都正确关闭连接并在使用后关闭所有准备好的语句和结果集。
我该如何调试这个问题?
编辑:
我做了一个 SHOW FULL PROCESSLIST 并得到了这个:
'168278', 'ledenplatform', 'd5152E6EC.static.telenet.be:60296', 'ledenplatform', 'Sleep', '1', '', NULL
'348864', 'ledenplatform', 'ledenplatform.xlshosting.net:51160', 'ledenplatform', 'Sleep', '52', '', NULL
'348865', 'ledenplatform', 'ledenplatform.xlshosting.net:51161', 'ledenplatform', 'Sleep', '52', '', NULL
'348866', 'ledenplatform', 'ledenplatform.xlshosting.net:51162', 'ledenplatform', 'Sleep', '52', '', NULL
'348867', 'ledenplatform', 'ledenplatform.xlshosting.net:51163', 'ledenplatform', 'Sleep', '52', '', NULL
'348868', 'ledenplatform', 'ledenplatform.xlshosting.net:51164', 'ledenplatform', 'Sleep', '52', '', NULL
'348869', 'ledenplatform', 'ledenplatform.xlshosting.net:51165', 'ledenplatform', 'Sleep', '26', '', NULL
'348870', 'ledenplatform', 'ledenplatform.xlshosting.net:51166', 'ledenplatform', 'Sleep', '26', '', NULL
'348871', 'ledenplatform', 'ledenplatform.xlshosting.net:51167', 'ledenplatform', 'Sleep', '21', '', NULL
'348883', 'ledenplatform', 'ledenplatform.xlshosting.net:51179', 'ledenplatform', 'Sleep', '21', '', NULL
'361885', 'ledenplatform', 'd5152E6EC.static.telenet.be:53691', 'ledenplatform', 'Sleep', '36', '', NULL
'377875', 'root', '94-226-251-210.access.telenet.be:54267', 'ledenplatform', 'Sleep', '39', '', NULL
'377876', 'root', '94-226-251-210.access.telenet.be:54268', 'ledenplatform', 'Query', '0', NULL, 'SHOW FULL PROCESSLIST'