昨夜、Play が突然データベースに接続できなくなりました (同じ EC2 インスタンス上の PostGreSQL)。
23:57:31.996 [BoneCP プール ウォッチ スレッド] エラー com.jolbox.bonecp.hooks.AbstractConnectionHook {1}
-接続の取得に失敗しました。5000 ミリ秒スリープしてから再試行します。残りの試行: 10。例外: null
スローされるエラーが異なる場合があります。
01:21:05.920 [BoneCP-pool-watch-thread] ERROR com.jolbox.bonecp.PoolWatchThread {1} - 接続の取得中にエラーが発生しました。5000msでリトライ
org.postgresql.util.PSQLException: FATAL: 残りの接続スロットは非レプリケーション スーパーユーザー接続用に予約されています
5 秒ごとに再試行しましたが、成功しませんでした。Playを再起動したところ、うまく再接続されました。
これは今週2回発生します。
自動再起動を考えました。そのためのツールを知っていますか?または他のアイデア?
編集 Build.scala の依存関係を更新して BoneCP を更新しました。
"com.google.guava" % "guava" % "14.0-rc1",
"org.slf4j" % "slf4j-api" % "1.7.5",
"com.jolbox" % "bonecp" % "0.8.0-rc1",
"org.reflections" % "reflections" % "0.9.8"
しかし、今では、接続を閉じることができないというこのエラーが定期的に発生します。そのため、再び接続の最大数に達します。
-接続 org.postgresql.util.PSQLException を閉じているときにエラーが発生しました: トランザクションの途中でトランザクションの読み取り専用プロパティを変更することはできません。org.postgresql.jdbc2.AbstractJdbc2Connection.setReadOnly(AbstractJdbc2Connection.java:617) で ~[postgresql.postgresql-9.1-901-1.jdbc4.jar:na]