我的应用程序执行许多查询,并确保所有连接都已关闭。 PgAdmin显示许多查询已经消失了#34;闲置交易"最后DB变得反应迟钝。有没有办法让查询在交易中空闲' ?还是可以跟踪它的任何其他工具?使用Postgres 8.1 修改:使用连接池。此外,国家'在交易中#39;几分钟后就被清除了。然后,如果打开任何连接,该如何清除?
答案 0 :(得分:2)
这是一个干净的信号,因此有些关于关闭交易和结账会话的信息在您的申请中是错误的。查询效果很好。检查您的应用程序 - 意外的异常,失败,......某些应用程序非常错误 - 通常是非常严重问题。孤立事务会阻止VACUUM并阻止重用连接。
答案 1 :(得分:1)
如果您在Postgres documentation中查看有关此内容的信息:
在事务中空闲(等待BEGIN块内的客户端),或者a 命令类型名称,如SELECT。此外,等待附加 服务器进程正在等待另一台服务器持有的锁 过程
我建议遵循以下事项:
使用class UrlMappings {
static mappings = {
"/$controller/$action?/$id?(.$format)?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
"404"(view:'/notFound')
}
}
启用“长查询”记录
Error Reporting and Logging部分 postgresql.conf 中的log_min_duration_statement
选项
检查 postgresql.conf 配置文件的Lock Management参数,特别是log_lock_waits
选项
查看关于Postgres Wiki的Lock Monitoring文章和Postgres中的pg_locks
视图