gpt4 book ai didi

java - 如何找到哪个应用程序保留了 Postgres 连接?

转载 作者:行者123 更新时间:2023-11-29 12:03:13 24 4
gpt4 key购买 nike

有几个应用程序在 Tomcat 上运行。他们使用 Postgres 数据库,有时会超过最大连接限制:

org.hibernate.exception.GenericJDBCException: Error calling Driver#connect         at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)

Caused by: org.postgresql.util.PSQLException: FATAL: remaining connection slots are reserved for non-replication superuser connections
at org.postgresql.core.v3.ConnectionFactoryImpl.readStartupMessages(ConnectionFactoryImpl.java:684)

我已尝试增加限制 ( How to resolve FATAL: connection limit exceeded for non-superusers ),但问题仍然存在。如何找出哪个应用程序接管了连接槽?

最佳答案

将 ApplicationName 添加到连接字符串,如下所示:

jdbc:postgresql://localhost:5435/MyDB?ApplicationName=MyApp

然后你会看到它:

select application_name, count(1), state 
from pg_stat_activity
group by application_name, state;

当然,只有当您为不同的应用程序使用单独的连接字符串时,这才有效。

同时检查一些 info关于与 JDBC 的连接池。

关于java - 如何找到哪个应用程序保留了 Postgres 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43755102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com