1
我重複檢查了我的代碼,並且在finally塊中有conn.close,但是當我執行SELECT * FROM pg_stat_activity;我看到很多空閒的連接。我怎樣才能解決這個問題?Postgresql連接在JDBC關閉後保持空閒
我重複檢查了我的代碼,並且在finally塊中有conn.close,但是當我執行SELECT * FROM pg_stat_activity;我看到很多空閒的連接。我怎樣才能解決這個問題?Postgresql連接在JDBC關閉後保持空閒
這最可能的原因是您的應用程序正在使用連接池。如果是這樣,游泳池將抓住連接並保持其一部分打開,以便它們可以重複使用。連接將顯示爲IDLE,直到執行另一個命令或關閉應用程序。
如果沒有關閉連接,您可能會看到類似於IDLE的事情 - 在事務中,這意味着連接處於打開狀態,正在等待執行提交或回滾,但沒有收到任何命令。另外,我知道你說你關閉了連接,所以我不確定這是否適用於你,但我只是想拋出,我也沒有明確地關閉PreparedStatements以前遇到過問題。
請注意,大多數連接池爲您提供了一個Connection實例,其「close()」方法不會關閉底層連接,只是簡單地將其返回給池以便可以重新使用。您可能需要配置您的池以在有限的時間內保持空閒連接。 – Matt