我有一个运行在Tomcat7上的Grails应用程序,在管理MySQL连接时遇到了问题。
问题在于,对应用程序的每个新请求(即页面加载)都会创建一个新的MySQL连接,而这些连接并没有关闭。相反,它们会一直处于休眠状态,直到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"
/>非常感谢您的建议。
发布于 2013-03-12 00:16:33
您没有定义连接池。
将以下代码添加到context.xml(它似乎是一个JNDI数据源):
pooled = "true"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"如果您尚未将JDBC Pool放入依赖项配置中,请将以下内容添加到BuildConfig.groovy中的plugins闭包中:
compile ":jdbc-pool:1.0.9.3"您可以使用其他连接池,但我建议使用JDBC池。
https://stackoverflow.com/questions/15338902
复制相似问题