我将 Ehcache 与 BigMemory Go 一起使用,并带有一个用于 6 个缓存的本地可重新启动持久磁盘存储。每个缓存的缓存配置如下:
<cache name="CacheService"
maxElementsInMemory="200000"
eternal="false"
timeToLiveSeconds="86400"
statistics="true">
<persistence strategy="localRestartable"/>
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
</cache>
从分析中我们知道,所有缓存的总内存大小小于 1GB。然而,永久性磁盘存储目前使用了大约 27GB 的磁盘空间。27GB 包含许多大小约为 514MB 的 seg*.frs 文件。似乎这些文件每分钟创建一次,然后前滚,超过 ~60 分钟的文件被删除:
-rw-r--r-- 1 jboss jboss 0 Nov 14 10:29 frs.backup.lck
-rw-r--r-- 1 jboss jboss 0 Nov 10 09:02 FRS.lck
-rw-r--r-- 1 jboss jboss 514M Nov 14 09:22 seg000013456.frs
-rw-r--r-- 1 jboss jboss 514M Nov 14 09:23 seg000013457.frs
-rw-r--r-- 1 jboss jboss 513M Nov 14 09:23 seg000013458.frs
...
-rw-r--r-- 1 jboss jboss 514M Nov 14 10:23 seg000013504.frs
-rw-r--r-- 1 jboss jboss 344M Nov 14 10:29 seg000013505.frs
我的问题是:
- 这是磁盘存储的预期行为吗?或者我们的缓存/缓存元素是否有问题会产生大量的段?
- 有没有办法/配置来限制保留在磁盘上的段数?
- 或者同样减少 60 分钟的窗口以更频繁地删除文件?