2011-08-23 16 views
0

我正在ATG 9帶着一幫在配置的repository.xml不同的對象具有特定的高速緩存大小,TTL等爲什麼我的ATG存儲庫項目緩存最終使用率超過100%?

例如:

<item-descriptor name="USER" 
    query-expire-timeout="300000" 
    item-expire-timeout="300000" 
    item-cache-timeout="300000" 
    item-cache-size="20000" 
    query-cache-size="50"> 
... 

我期待高速緩存不會增長到超過這個大小,並會過期舊項目,以保持高速緩存大小在或低於項目緩存大小。但是,當我查看Dynamo管理控制檯中的緩存統計信息時,我看到我們的一些項目已使用500-1000%的比率。隨着時間的推移,這會佔用JVM中的所有內存,因爲越來越多的項目被緩存並且顯然永遠不會釋放。如果我在管理控制檯上調用Repository上的invalidateCaches方法,則可用內存會跳回來,然後慢速下移再次開始。

如何確保緩存不會超過其配置的大小並接管所有內存?有一些配置設置我錯過了嗎?是否有必須採用代碼技巧來防止緩存失控? ATG文檔不是最具信息量的,並且Google搜索也沒有產生太多信息。

+0

是USER重要的情況嗎?你有沒有嘗試改變緩存模式? eon

+0

相信你還必須在xml文件的頂部指定xml-combine。 ''gsa-template xml-combine =「append」>'的行。 – bated

回答

0

啓動ATG實例後,我建議導航到Dynamo Admin頁面中的ProfileAdapterRepository(/ dyn/admin/nucleus/atg/userprofiling/ProfileAdapterRepository /?propertyName = definitionFiles)並查看存儲庫定義文件的組合視圖。這是確定最終文件的最佳方式,因爲它可以由多個文件組成。

您應該通過此界面查看您在「用戶」存儲庫項目上配置的屬性(注意全部小寫)。

如果您在此沒有看到您的屬性,那麼您可能沒有加載您的存儲庫定義文件,或者您正在使用的模塊未啓動或文件不在配置路徑中。

相關問題