2014-04-23 94 views
0

我們使用的是EhCache 2.6.2。因爲我們需要高生存能力,所以我們只使用DiskStorage而不使用MemoryStorage。爲什麼每個DiskStorage在EhCache中刷新需要4秒?

每次數據更新後,我們在程序中,我們將數據刷新到磁盤。

經過一段時間,cache.data文件超過了1 gb的最大值。當數據文件爲250 MB時,刷新需要250毫秒,當它是1 GB時,需要3.5秒。

我們的對象大約20kb,所以它們有數以百萬計。

有沒有辦法將數據文件拆分爲幾個較小的文件並讓EhCache處理它?

我們希望有解決方案只涉及配置更改而不更改代碼,導致它在生產環境中。

環境的詳細信息:

與IBM的Java 1.6具有的Ehcache 2.6.2在AIX 6.1 64位運行WebSphere 7。

回答

1

在Ehcache 2.6.2中,所有高速緩存數據將始終位於磁盤上,與storage model changed一樣,因此除了磁盤存儲之外,您還可以通過使用內存存儲器來提高速度。

你是什麼意思時,你說:

後,我們已經在計劃中的每一個數據更新,我們的數據刷新到磁盤。

關於盤店的業績,有一個選項,你可以嘗試:

<cache diskAccessStripes="4" ...> 
    ... 
</cache> 

其中diskAccessStripes屬性有兩個值的功率。先嚐試一下小數值,然後看看你是否有所收穫。此屬性的確切影響取決於很多因素:硬件,操作系統以及應用程序的使用模式。

+0

請注意,「高生存能力」不會像磁盤存儲的開源版本那樣提供。例如虛擬機崩潰或正確的JVM(和CacheManager)關閉可能導致數據損壞。儘管Ehcache在確定磁盤上的緩存數據是否在重新啓動時沒有損壞方面做出了最大的努力,但並不總是能夠這樣做。 –

+0

謝謝你的回答!我在你提到的句子中所提到的是,在每次更新緩存中的數據後 - 都會強制高速緩存寫入磁盤。它不等待定期自動保存。我還支持在磁盤和RAM之間組合緩存的想法,但目前在該項目中並不可行。我會檢查你提到的diskAccessStripes!再次感謝 – arieljannai

相關問題