我正在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搜索也沒有產生太多信息。
是USER重要的情況嗎?你有沒有嘗試改變緩存模式? –
eon
相信你還必須在xml文件的頂部指定xml-combine。 ''gsa-template xml-combine =「append」>'的行。 – bated