2015-08-13 87 views
10

我使用Wildfly 8.2並在打開某個網頁時觸發一系列數據庫請求。所有查詢都通過JPA Criteria API調用,並按預期返回結果 - 並且 - 它們中沒有一個提供警告,錯誤或異常。它全部運行在並行Plesk中。無法填充池(沒有可用的緩衝區空間)

現在,我注意到在2到3天內出現以下錯誤,網站變得無響應。我重新開始,我又等了大約3天,直到它再次發生(取決於我的要求數量)。 enter image description here

我檢查了我的linux服務器上的tcpsndbuf,我發現它一直在最大。除非我重新啓動Wildfly。顯然它無法釋放連接。 enter image description here

連接由JPA/Hibernate和Wildfly容器管理。我不做任何特殊或自定義的交易處理,例如開關。等我把這一切留給Wild。。

我使用的MySQL驅動是5.1.21(MySQL的連接器的Java-5.1.21-bin.jar)

在我已經定義了以下數據源的數據源值standalone.xml(除其他):

<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> 
<pool> 
    <min-pool-size>3</min-pool-size> 
    <max-pool-size>10</max-pool-size> 
</pool> 
<statement> 
    <prepared-statement-cache-size>32</prepared-statement-cache-size> 
    <shared-prepared-statements>true</shared-prepared-statements> 
</statement 

有沒有人遇到tcpsndbuf值(或此錯誤)的同樣的上升?如果您需要更多配置或日誌文件,請告訴我。謝謝!


UPDATE 儘管以下附加超時設置,它仍然運行到衣架。因此,只要達到最大tcpsndbuf,它就會使用100%的CPU時間。 enter image description hereenter image description here

回答

5

嘗試增加此休眠特性:

<property name="hibernate.connection.release_mode">after_transaction</property> 

默認情況下,JTA mandates that connection should be released after each statement,這是不可取的大多數用例。大多數驅動程序不允許通過多個XA事務複用連接。

+0

不可以。它沒有幫助。它以同樣的方式增長。我也更換了mysql驅動程序 - 沒有成功。 – feder

3

你使用openvz嗎?我認爲應該在serverfault上詢問這個問題。它與linux配置有關。你可以閱讀:tcpsndbuf。您應該計算打開的套接字並檢查條件:UBC consistency check

+0

編號我使用了Paralles Power Panel。沒什麼幫助。 Hibernate的release_mode和mysql驅動程序更新都沒有工作。 – feder

+0

Parallels Power Panel是基於Web的工具,用於管理openvz容器 – sibnick

相關問題