2016-11-17 39 views
2

我有一個使用SoftIndexFileStore進行持久性設置的Infinispan(8.2.4 Final)集羣緩存存儲。如何處理Infinispan持久緩存存儲中的SoftIndexFileStore的舊文件?

該文檔指出,如果條目過期,壓縮程序無法清除已清除的條目,並且磁盤使用量將超時。從用戶指南:

當條目存儲到期時,SIFS無法檢測到這些條目的某些 已過期。因此,這樣的舊文件不會是 壓縮(方法AdvancedStore.purgeExpired()未實現)。 這可能會導致文件系統空間使用量過大。

我的大部分條目都過期了,但有一些需要無限期保存,這意味着我不能每隔一段時間簡單地運行一次清理作業來刪除所有數據文件。

如何處理這個浪費的磁盤使用?經過幾周的運行,我看到很多文件在幾周內沒有被修改過。刪除未修改的舊文件是否安全不到一個月前?

回答

2

否;舊文件不會再被修改(它們被寫入一次,然後被視爲不可變,直到被刪除)。手動刪除它們可能會導致失敗,因爲這些文件在索引中被引用。

遺憾的是,當商店被迭代並且條目被發現過期時,Compactor.free()未被調用,因爲可能有多個併發迭代,並且我們最終可能會多次調用它以進行單個條目。

一個合適的解決方案是實施一個週期性(或JMX觸發)過程,通過舊文件,計算過期條目佔用的空間,並調度超過壓縮閾值的文件。這應該進入Compactor。有關一般設計說明,請參閱SIFS javadoc

如果您有興趣開發此功能,並且您想進一步討論,請轉至Infinispan forum

+0

所以現在我沒有簡單的方法來處理這個增加的磁盤使用情況。我將不得不創建某種程序來停止一個節點,刪除所有數據和索引文件,然後使節點恢復,以便它加入羣集並複製所有數據。 – bitwalker

+0

還在習慣SO,不知道編輯評論的5分鐘規則。只是想感謝你的回答。 – bitwalker

+0

是的,我不得不承認,在設計商店時,我還沒有儘快過期。請在https://issues.jboss.org/上提出請求此功能的問題 –