我正在使用java servlet和pgadmin 9.1.Problem是servlet中的连接没有正确关闭所以如果它达到最大连接就会导致空白屏幕。我不希望每个用户扩展最大连接数pgadmin ...我在servlet的开始和结束点使用了下面的查询,但由于管理员命令,它的显示错误如...连接终止..
ResultSet rs_1q=st_Query3.executeQuery("SELECT pg_terminate_backend(pg_stat_activity.procpid)FROM pg_stat_activity WHERE pg_stat_activity.current_query = '<IDLE>' AND procpid <> pg_backend_pid();");
答案 0 :(得分:4)
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'databasename' AND pid <> pg_backend_pid() AND state in ( 'idle');
答案 1 :(得分:2)
我不认为杀死连接是一种理想的解决方案,因为可能存在某些可能真正等待事务完成的连接。相反,我建议你为你的交易设置一个超时。
但是,如果你急于杀死空闲连接,那么你可以尝试这样:
使用shell脚本并执行"ps auxwww|grep 'idle in transaction'"
这将返回所有&#34;空闲的列表
。交易#&34;流程。
然后你可以使用&#34; awk&#34;找到每一行输出来得到
进程ID,最后您可以对每个进程使用"kill <pid>"
。