繁体   English   中英

Spring + C3P0 + Postgres

[英]Spring + c3p0 + postgres

我正在使用Spring 3.0.5.RELEASE和Postgres 9.1。 我将最大连接数限制为17:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  <property name="driverClass" value="${database.driver}" />
  <property name="jdbcUrl" value="${database.url}" />
  <property name="user" value="${database.username}" />
  <property name="password" value="${database.password}" />
  <property name="initialPoolSize" value="3" />
  <property name="minPoolSize" value="1" />
  <property name="maxPoolSize" value="17" />
</bean>

当我的应用程序占用所有连接时,它只会挂起,并且不会取消或接受更多事务。 Postgres中的所有进程都处于“事务空闲”状态。

谢谢!

“交易空闲”表示您已开始交易,但从未提交或回退过交易。 使用完毕后,请确保关闭所有语句。 如果看不到您正在打开的语句,请修改postgresql.conf文件以使用以下设置记录查询的进程ID:

log_line_prefix = '%p'
log_statement = 'all'

当您重新加载PostgreSQL并检查日志文件时,您将能够看到由挂在“事务空闲”状态的连接发出的所有查询。

您描述的症状与应用程序的泄漏连接一致。 也就是说,您的应用程序正在签出Connections,但是没有签回[即,无法调用close()]。

您是否一直在使用强大的资源清理习惯? 见例如

http://old.nabble.com/Re:-My-connections-are-all-idle...-p27691635.html

如该链接中所建议,请尝试暂时设置unreturnedConnectionTimeout并使用
debugUnreturnedConnectionStackTraces跟踪泄漏。 看到

http://www.mchange.com/projects/c3p0/index.html#unreturnedConnectionTimeout

http://www.mchange.com/projects/c3p0/index.html#debugUnreturnedConnectionStackTraces

我希望这有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM