当前位置: 首页 > 面试题库 >

C3P0 Spring Hibernate:池已满。如何调试?

孙书
2023-03-14
问题内容

我在Tomcat上有一个Spring Hibernate应用程序。连接池为C3P0

我迅速遇到来自C3P0的线程池已满警告。然后,对Web应用程序的所有请求都将挂起。

我仍然假设在代码中的某个地方我错过了@Transaction注解。我想调试我的代码。

问题:是否可以通过代码访问连接池,以便在释放连接和不释放连接时进行调试?

更新:当前c3p0配置:

<!-- Hibernate -->

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"

        destroy-method="close">

        <property name="driverClass" value="org.postgresql.Driver" />

        <property name="jdbcUrl" value="jdbc:postgresql://localhost/ikoda01?useUnicode=true&#38;characterEncoding=utf8" />

        <property name="user" value="xxxuser" />

        <property name="password" value="xxxxx" />



        <property name="acquireIncrement" value="2" />

        <property name="minPoolSize" value="3" />

        <property name="maxPoolSize" value="50" />

        <property name="maxIdleTime" value="600" />

    </bean>

问题答案:

我可以通过代码访问连接池,以便在释放连接和不释放连接时进行调试吗?

您甚至不必编写代码,它是内置的。如果您配置c3p0来调试连接泄漏,它将仅打印代码路径的堆栈跟踪,以将泄漏的连接检出到您的日志中。

更新:

<property name="unreturnedConnectionTimeout" value="30" />
<property name="debugUnreturnedConnectionStackTraces" value="true" />

您应该使用的值unreturnedConnectionTimeout取决于您的应用程序。它应该比Connection预期的最长合法使用时间长,但不短于它,它会更快地收到有关该泄漏的日志消息,并且您的应用程序将更顺利地解决该问题。对于大多数网络式应用程序,上面显示的30秒是保守的,预计客户端不会等待30秒左右的响应,因此超时可以安全地指示连接泄漏。



 类似资料:
  • 此刻我被困住的一点是调试处于“活动”状态的连接,以及它们正在做什么或它们当前被困的原因。 当我运行“10个同时用户”时,它基本上可以转换成2或3倍于此的查询,因此,当我打开HikariCP调试日志时,它会挂在类似的位置-上,而“active”连接并没有真正释放连接,这正是我试图找出的原因,因为查询相当简单,表本身只有4个字段(包括主键)。 HikariCP人员的最佳实践通常也是,增加连接池不是实现

  • 问题内容: 我正在尝试在包含192个jpg文件(共约70 mb)的目录上使用JOBB工具。当我运行命令时,它会产生以下日志: 有什么建议吗? 问题答案: 根本原因分析: 当或 异常发生在哪里? :DirectoryFullException.java 对于这个问题,我希望有一个解决方案和一些建议。 希望对您有帮助。 解决方案1: 在Windows上:如果您的文件夹“数据”丢失图片,并复制到andr

  • 问题内容: 我试图通过简单的查询将行添加到表中: 但是,当我尝试此查询时,得到以下信息: 错误1114(HY000):表已满 做一个 给了我188,959行,考虑到我在同一数据库中有另一个具有810,635行的表,这似乎不算太多。 我对的经验不足,并且从未遇到过这个问题。这里有哪些潜在问题? 编辑:这仅在向表中添加一行时发生。 问题答案: 编辑: 在解决与配置有关的分辨率之前,请先检查是否没有用完

  • 问题内容: 当我在Amazon EC2服务器上运行时,输出如下: 由于某种原因,某些东西正在耗尽我的存储空间。 我试图找到所有大文件/文件夹,这就是我得到的: 我怎么知道什么吞噬了我的存储空间? 问题答案: 好吧,我认为它的一个(或多个)日志文件太大了,需要删除/备份。我建议先处理大文件。因此,请查找所有大于的文件(10 MB足够大的文件大小,您可以为1MB同样选择+ 1M) 现在您可以找出造成问

  • 总共半小时 1、自我介绍 2、为什么会出现OOM、怎么定位OOM错误?jvm启动参数? 3、jvm内存区域有哪些区域会出现内存溢出 4、jvm堆内存内存结构 5、元空间在哪儿?怎么分配本地内存? 6、ConcureentHashMap底层原理 7、Synchronized 和 ReentrantLock不同?condition.singal()原理 8、线程状态,sleep和wait的区别 9、v

  • null 任何想法都将受到赞赏。