我有一个在 Tomcat 7 下运行的 Grails 应用程序,但在管理 MySQL 连接时遇到问题。
问题是对应用程序的每个新请求(即页面加载)都在创建一个新的 MySQL 连接,并且这些连接没有关闭。相反,它们一直处于 SLEEP 状态,直到 MySQL 服务器最终拒绝接受更多连接。因此,只需快速重新加载站点上的各个页面,就可以创建大量数据库连接。
所以似乎我的连接池没有足够快地关闭与 MySQL 的连接。连接池有许多配置设置,但我不确定需要调整什么来避免这个问题。
这是我的 context.xml 文件中的配置:
<Resource name="jdbc/Production" auth="Container" type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
minEvictableIdleTimeMillis="1800000"
timeBetweenEvictionRunsMillis="1800000"
numTestsPerEvictionRun="3"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"
testOnBorrow="true"
testWhileIdle="true"
testOnReturn="true"
validationQuery="SELECT 1"
username=""
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/Production"
/>
非常感谢您的任何建议。