首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails / Tomcat:数据库连接陷入睡眠状态

问Grails / Tomcat:数据库连接陷入睡眠状态
EN

Stack Overflow用户
提问于 2013-03-11 20:44:12
回答 1查看 848关注 0票数 0

我有一个运行在Tomcat7上的Grails应用程序,在管理MySQL连接时遇到了问题。

问题在于,对应用程序的每个新请求(即页面加载)都会创建一个新的MySQL连接,而这些连接并没有关闭。相反,它们会一直处于休眠状态,直到MySQL服务器最终拒绝接受更多连接。因此,只需快速重新加载站点上的单个页面,就可以创建大量数据库连接。

因此,我的连接池似乎没有足够快地关闭与MySQL的连接。连接池有许多配置设置,但我不确定需要调优哪些设置才能避免此问题。

下面是我的context.xml文件中的配置:

代码语言:javascript
复制
        <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"
    />

非常感谢您的建议。

EN

回答 1

Stack Overflow用户

发布于 2013-03-12 00:16:33

您没有定义连接池。

将以下代码添加到context.xml(它似乎是一个JNDI数据源):

代码语言:javascript
复制
pooled = "true"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

如果您尚未将JDBC Pool放入依赖项配置中,请将以下内容添加到BuildConfig.groovy中的plugins闭包中:

代码语言:javascript
复制
compile ":jdbc-pool:1.0.9.3"

您可以使用其他连接池,但我建议使用JDBC池。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15338902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档