簡體   English   中英

Kubernetes Pod被殺死后釋放JDBC連接

[英]Releasing JDBC connections after kubernetes pod is killed

我正在Kubernetes中運行幾個spring boot應用程序。 每個應用程序都使用spring JPA連接到Postgresql 10.6數據庫。 我注意到的是,當Pod被意外殺死時,與數據庫的連接未釋放。

SELECT sum(numbackends) FROM pg_stat_database;運行SELECT sum(numbackends) FROM pg_stat_database; 數據庫上的返回值可以說是50,在殺死了幾個運行spring應用程序的pod並重新運行查詢后,該數量躍升到60,這最終導致與postgresql的連接數超過了最大值,並阻止了重啟的pod的應用程序連接到數據庫。

我已經嘗試將postgresql選項idle_in_transaction_session_timeout設置為15s,但這不會刪除舊的連接,並且連接數一直在增加。

我正在為我的spring應用程序使用com.zaxxer.hikari.HikariDataSource數據源,並且想知道是否有一種方法可以防止這種情況的發生,無論是在posgresql還是spring boot方面。

歡迎任何意見或建議。

春季啟動版本:2.0.3.RELEASE
Java版本:1.8
PostgreSQL版本10.6

這個問題不僅可能出現在kubernetes pod上,還可能出現在服務器上運行的簡單應用程序上,該應用程序被強制kill -9 pid (例如Linux上的kill -9 pid ),並且沒有機會通過關閉掛鈎進行清理以進行春季啟動。 我認為在這種情況下,應用程序方面沒有任何幫助。 如前所述,您可以通過但在數據庫方面的一些方法盡量不活動連接清理這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM