2017-05-03 17 views
0

Tomcatにはいくつかのアプリケーションが動作しています。彼らは、Postgresのデータベースを使用し、時には最大接続制限超過: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)を大きくしようとしたが、問題が残っています。接続スロットを引き継ぐアプリケーションを見つける方法

+4

'jdbc:postgresql:// localhost:5435/MyDB?ApplicationName = MyApp'のようにcsにApplicationNameを追加すると、' pg_stat_activity'に表示されます –

+0

履歴アクティビティを見る方法はありますか? – Justas

+0

pg_stat_activityをどこかで定期的に保存するなら、確かに。歴史的に 'application_name'はあなたの値に設定されません... –

答えて

2

ここのように、接続文字列にの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を確認してください。

関連する問題