2014-12-03 63 views
2

我使用兵馬俑企業級Ehcache與Java應用程序一起,但在一天的某些時刻,其秦始皇開始花費太多的時間來回答PUT/GET請求,有時鎖定客戶的線程和啓動的異常。陶土的Ehcache鎖定客戶

我的基礎設施是由5個的JBoss服務器6.2.0羣集並用4陶土企業級Ehcache 3.7.5存儲大量數據的另一集羣組成。

該應用程序每天大約有1000萬次訪問兵馬俑Ehcache。

  • 本來我使用的標準,但是,當問題開始時,我改變了一切只使用id搜索。

  • 我試圖改變DGC間隔,使其運行更加頻繁,甚至每天只有一次,它沒有得到任何好轉。

  • 我開始與餘輝模式永久存儲和試圖改變臨時交換隻,但問題仍然存在。

  • 試圖改變陶土集羣2噸的活性物質的機器和2個無源器件或4層的活性物質的工作。

  • 試圖配置我的緩存爲永恆的真或假。

  • 我所有的緩存是不間斷的,我試圖用timeoutBehavior作爲例外或空操作。

基本上沒有我的努力似乎產生任何顯著變化和兵馬俑繼續在此狀態下,不能回答的請求不再進入。

現在,似乎「解決」問題的唯一方法是重新啓動所有客戶端。

有沒有人有類似的情景使用兵馬俑,這種吞吐量?任何想法現在在哪裏看?

回答

0

是的,我面臨類似的問題,在terracota羣集設置上的線程爭用。從屬請求獲取/放置過去需要時間,並且線程轉儲顯示鎖定是主要原因。因爲它已經超過4-6個月了,所以我不記得這些細節。我有2個選項,則:

  • 創建這將是一個自定義的戰爭,將下方運行的Ehcache和揭露我自己放,獲取,刪除等操作的REST端點一個自己的緩存服務器。
  • 使用ehcache提供的緩存複製。

我第一次嘗試複製起訴RMI,然後與JGroups。基於RMI的方法非常出色,而且非常穩定,所以我決定轉向基於RMI的複製,ehcache提供了OOTB。我的設置是使用ehcache作爲基於hibernate的JPA緩存提供程序,並且RMI absed解決方案工作得非常好而且有效。它足夠智能,可以查看集羣中的其他服務器何時關閉以及何時啓動。複製是異步和透明的。由於第二種方法運作良好,我沒有嘗試第一種方法。

+0

感謝您的回答@Nazgul,我將在通過RMI更改複製之前嘗試更多的Terracotta Enterprise集羣,但我會考慮這一點! – 2014-12-05 15:29:01