首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检测tomcat连接池问题

如何检测tomcat连接池问题
EN

Stack Overflow用户
提问于 2013-03-27 02:18:17
回答 1查看 1.2K关注 0票数 0

我们有一个使用Tomcat6和MySQL 5.0的Java Spring MVC2.5应用程序。我们有一个奇怪的场景,无论出于什么原因,c3p0连接池中使用的连接数量开始失控,最终导致tomcat崩溃。

我们通过JMX监控c3p0连接池,大多数时候,连接几乎不会被使用。当这种螺旋上升的情况发生时,我们的tomcat连接池就会耗尽,apache就会开始对线程进行排队。

在螺旋上升的场景中,数据库的负载很低,并且没有给出任何错误或任何明显的坏情况。

关于如何检测这个问题的想法开始耗尽了。我不认为做一个tomcat堆栈转储对我有任何好处,因为情况已经失控,我不确定如何在它失控之前抓住它。

我们也使用Terracotta,根据日志我不认为它做了什么奇怪的事情。

任何想法都将不胜感激!

干杯!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-27 02:43:34

你正在泄露连接的某个地方。当您显式地从会话工厂检索Hibernate会话,而不是获取与进程内事务相关联的连接时,可能会发生这种情况(不记得确切的方法名称)。

C3P0将允许您使用两个配置选项来调试这种情况(以下是从下载包中的文档复制的):

unreturnedConnectionTimeout定义了连接可以保持检出状态的时间限制(以秒为单位)。如果设置为非零值,则超过此限制的未返回的已签出连接将被立即销毁,然后在池中替换

将debugUnreturnedConnectionStackTraces设置为true,则每次签出连接时都会捕获堆栈跟踪。当未返回的连接超时时,将打印该堆栈跟踪,显示未及时签入的连接已签出的位置。debugUnreturnedConnectionStackTraces仅用于调试,因为捕获堆栈跟踪会降低连接签出的速度

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

https://stackoverflow.com/questions/15644526

复制
相关文章

相似问题

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