2016-05-17 23 views
0

PostgreSQLデータベースに接続しているSpring Bootアプリケーションの問題をトラブルシューティングしています。アプリが正常に動作しますが、かなり適度な負荷の下では、このようにエラーを記録し始めます。これは、PostgreSQLのRDSに接続するAmazon EC2インスタンス上で実行されているSpringブート/ Amazon PostgreSQL RDS接続プールの問題

java.sql.SQLException: Timeout after 30000ms of waiting for a connection. 

。アプリは以下のように設定されている:AWSコンソールで

spring.datasource.url=jdbc:postgresql://[rds_path]:5432/[db name] 
spring.datasource.username=[username] 
spring.datasource.password=[password] 
spring.datasource.max-active=100 

、私は、データベースへのアクティブな60個の接続を参照してください、それはいくつかの春ブーツのアプリ(すべてではない、このアプリ)を越えています。 pg_stat_activityを使って現在の活動をデータベースに照会すると、アイドル状態の1つまたは2つ以外のすべての接続が表示されます。これは、春のブートアプリケーションのすべての利用可能な接続を使用していないようですか?あるいは何らかの形で接続が漏れていますか?私はpg_stat_activityが非常に多くのアイドル状態の接続をどのように表示し、アプリケーションが接続プールのタイムアウトを取得しているかを解釈しようとしています。

+0

おそらくファイアウォールの問題です。アプリケーションサーバーのポートを開いてもよろしいですか? –

+0

申し訳ありませんが、私の記事を明確にしました。一部の負荷の下でのみ、アプリケーションに接続エラーが発生します。 – Mike

答えて

0

Springは、Hikariデータベース接続プーリングを使用しています(スタックトレースをより詳細に検査するまでそれを認識しませんでした)。 Hikariの設定パラメータには、最大プールサイズを使用するプールサイズを設定するための異なる名前があります。それを更新し、問題を解決しました。

関連する問題