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),但问题仍然存在。如何找出哪个应用程序接管连接插槽?
答案 0 :(得分:3)
将ApplicationName添加到连接字符串,如下所示:
jdbc:postgresql://localhost:5435/MyDB?ApplicationName=MyApp
然后你会看到它:
select application_name, count(1), state
from pg_stat_activity
group by application_name, state;
只有当你为不同的应用程序设置单独的连接字符串时,这才有效。
同时检查与JDBC池连接的某些info。