Ric*_*cky 11 java postgresql hibernate c3p0
我正在使用Hibernate 4,PostgreSQL和C3P0.
在我的Web应用程序中,经过一段时间后,我SHOW TRANSACTION ISOLATION LEVEL在数据库中收到多个查询,因为我的服务器挂起了.在我的代码中,我的所有连接都已正确关闭.
是否由于连接泄漏?
您还应该检查state每个查询,如果idle它是最有可能没有问题的.
pg_stat_activity将显示每个打开的连接执行的最后一个查询.并且c3p0用于SHOW TRANSACTION ISOLATION LEVEL保持连接打开(正常和预期的行为).
这就是发生的事情:
SHOW TRANSACTION ISOLATION LEVEL 执行以保持连接打开.pg_stat_activity因为在某些情况下,这些是通过给定连接执行的最后一次查询.它们也将显示为idle因为此连接未被激活使用听起来你可能正在通过连接池中的连接方式过快地搅拌.
这可能是因为您设置过于激进maxIdleTime或maxConnectionAge,或因为连接失败的连接测试,并越来越被驱逐,或者因为你的应用程序错误重构池时,它要求的连接,而不是持有和使用稳定池.(这是一个非常糟糕但令人惊讶的常见错误.)
c3p0检查每个连接获取的连接隔离级别一次.由于获取的Connections应该在池中具有较长的生命周期,因此其摊销开销可以忽略不计.
但是,如果由于某些配置问题或错误,您的应用程序让c3p0不断获取Connections,每个客户端一个或者如果您为每个客户端重建池更糟糕,那么事务隔离检查可能会成为更糟糕的潜在问题的可见症状.
| 归档时间: |
|
| 查看次数: |
7880 次 |
| 最近记录: |