![](/img/trans.png)
[英]Wildfly Connection pool with PostgreSQL. Getting a JdbcSQLException
[英]How to kill the idle connection in Postgresql.?
我正在使用 java servlet 和 pgadmin 9.1。问题是 servlet 中的连接没有正确关闭,因此如果达到最大连接会导致黑屏。我不希望每个用户都在 pgadmin 中扩展最大连接...我在 servlet 的起点和终点使用了以下查询,但它显示的错误如..connection因管理员命令而终止..
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();");
通常,正如@Rahul 指出的那样,不建议终止连接。 但如果这是你最后的手段,这是终止空闲连接的方法:
SELECT pg_terminate_backend(pid) FROM pg_stat_activity
WHERE datname = 'databasename'
AND pid <> pg_backend_pid()
AND state in ('idle');
我不认为杀死连接是一个理想的解决方案,因为可能存在某些可能真正等待事务完成的连接。 相反,我建议您为您的交易设置超时。
但是,如果您不顾一切地杀死空闲连接,那么您可以尝试这样:
使用 shell 脚本并执行"ps auxwww|grep 'idle in transaction'"
,这将返回所有“idle in transaction”的列表。 过程。 然后您可以使用“awk”并查找每一行输出来获取进程ID,最后您可以对每个进程使用"kill <pid>"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.