2017-03-08 68 views
0

1.我們有使用servlet &的JSP在JBoss EAP-6.2上運行,並使用SQL 服務器數據庫J2EE應用程序的Jboss EAP 6.2 AvailableCount連接池漸漸收窄

2.用戶數爲20的UAT系統上的一切都很好,但當我們將相同的應用程序移至生產系統時,用戶數超過80個,我們在Jboss中就連接池數問題面臨問題。此計數持續下降,在8-10小時後,用戶無法在系統中登錄,因此我們需要通過單擊「配置文件」選項卡中「數據源」部分中的「刷新」按鈕手動刷新連接池。

3.我們檢查了沒有連接泄漏,因爲我們已經關閉了最後{}部分中的所有數據庫連接。

4.我們還增加了STANDALONE.XML文件中的最大/最小池大小,並添加了一些由RedHat站點推薦的驗證標籤。請參閱附件。

問題 - 有什麼辦法可以使Jboss Adminstrator控制檯上的Flush按鈕功能自動化,以便空閒連接會自動銷燬。

附加 - 連接池的Jboss控制檯視圖。 enter image description here

enter image description here

回答

0

空閒超時分鐘爲最大時間,以分鐘,空閒之前(未預留/未使用)連接被關閉。實際的最長時間取決於idleRemover掃描時間,這是任何池的最小空閒超時 - 分鐘的一半。

空閒連接由IdleRemover之後去除:

空閒超時分鐘+ 1/2(空閒超時分鐘)

空閒超時分鐘屬性應被配置爲一個值大於0但小於數據庫服務器,網絡防火牆等指定的超時時間,以允許在外部切斷空閒連接之前通過JBoss進行正常終止。

0

首先有以下建議來調整您的數據源。

1#有一個已知的問題充液=在釋放行真正

<prefill>true</prefill> 

請此設置爲false。

2#使用下面的數據源連接驗證機制:

<validation> 
    <validate-on-match>true</validate-on-match> 
    <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker" /> 
</validation> 

3#這不是推薦以下爲數據源:

- jta="false" : It should be true 
- use-ccm="false" : It should be true 

4#你可能想確保你的數據庫服務器配置到而不是空閒時間少於5分鐘的超時連接(JBoss中數據源的配置超時時間)。JBoss超時應該低於/小於數據庫服務器上配置的超時期限,以允許JBoss正常超時連接,而不是允許它們在外部超時。

5#應用程序組件保留的連接不受JBoss的超時限制。通過DataSource.getConnection()獲得的連接直到它們返回到池(通過調用Connection.close())並在池中保持未使用狀態直到idle-timeout-minutes才能被JBoss超時。即使沒有數據庫命令處於活動狀態,連接狀態仍在DataSource.getConnection()和Connection.close()之間使用,因爲這些連接由應用程序代碼擁有。

應用上述並檢查行爲