簡體   English   中英

Tomcat JDBC 連接池removeAbandoned不起作用

[英]Tomcat JDBC Connection Pool removeAbandoned not working

我們有一個使用 Tomcat JDBC 連接池的應用程序,與 Spring 引導和 ZF8CB334B3135A2A1D7 一起配置連接池本身運行良好(我已經能夠通過池提供的 JMX MBean 驗證),但特定參數似乎不起作用。

根據Tomcat 文檔,如果“removeAbandoned”設置為 true,則如果連接的使用時間超過 removeAbandonedTimeout,則該連接被視為已放棄並有資格刪除。 因此,我將“removeAbandoned”設置為 true,將“removeAbandonedTimeout”設置為 20(秒)。 我已經能夠使用 JMX MBean 驗證這兩個參數是否已正確設置。

為了測試放棄的連接是否真的被刪除,我手動鎖定了我的一個數據庫表,並在幾個瀏覽器選項卡上打開了訪問此類表的頁面。 每個人都打開了一個到我的數據庫的新連接,因為我能夠使用 JMX MBean 和使用show status where `variable_name` = 'Threads_connected'; . 但是,在 20 秒過去后,這些連接都沒有被刪除。 我什至等了更長的時間,直到我打開桌子,他們什么也沒發生。

根據我從 Tomcat 文檔中了解到的情況,這些連接都應該可以移除,因為它們都在使用中並且持續時間超過 20 秒。 那么這里發生了什么?

我的其他參數是 maxActive="75"、minIdle="5"、maxIdle="5"、initialSize="3"、validationQuery="SELECT 1" 和 testWhileIdle="true"。 我應該澄清一下,當表被鎖定時,所有這些連接都保持活動狀態(沒有一個再次空閑,也沒有一個從池中刪除)。

編輯:更正。 實際上,第一個連接正在被刪除,而不是后續的連接。 當“suspectTimeout”設置為 20 且“removeAbandoned”設置為 false 時,“logAbandoned”正確顯示所有可疑連接。

有同樣的問題。 請確保您還設置了以下參數:

  1. removeAbandoned = true
  2. 放棄WhenPercentageFull = 0(0是默認值,但您可以檢查是否明確設置此值)

暫無
暫無

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

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