ehcache 2.8.5 似乎最多拥有 100 万个条目
ehcache 2.8.5 seems hold 1 million entries at most
最近,我们打开了生产服务器的ehcache jmx接口,并开始了持续监控。
监控的时候,发现一个小对象的缓存好像有上限,好像是100万。
这是监控图,有上限。图的y轴是缓存中的ObjectCount,是通过ehcache jmx接口获取的。
graph ehcache object count
我们的缓存设置是这样的:
<cache name="prodStockApiEhCache" maxBytesLocalHeap="200M" overflowToDisk="false" eternal="false" timeToIdleSeconds="240" timeToLiveSeconds="360" memoryStoreEvictionPolicy="LRU" />
缓存管理器级别没有指定的配置。
我们缓存的 class 就像:
public class ProductStock {
private long productId;
private int productCount;
private int pickingCount;
private int lackType;
private int areaSale;
//getter and setter....
}
我们研究了ehcache的对象大小估计方法,它使用google的sizeof-agent.jar.
我们使用 sizeof-agent.jar 进行测试。我们 class 的实例堆大小约为 40 字节。 100万乘以40M,比我们配置的200M少很多
另外,我们搜索了ehcache(2.8.5)的源码,也没有发现100万的限制。另外,我们在eclipse调试模式下检查了我们的ehcachemanager实例的配置,maxEntriesOnHeap为0,这意味着没有限制。
这是有线的,有没有我们遗漏的信息?监控图的内涵对吗?
据我所知,没有 1 000 000 个条目的限制。你能提供完整的ehcache.xml
吗?
您看过 JMX 统计数据了吗?有驱逐吗?
最近,我们打开了生产服务器的ehcache jmx接口,并开始了持续监控。
监控的时候,发现一个小对象的缓存好像有上限,好像是100万。
这是监控图,有上限。图的y轴是缓存中的ObjectCount,是通过ehcache jmx接口获取的。
graph ehcache object count
我们的缓存设置是这样的:
<cache name="prodStockApiEhCache" maxBytesLocalHeap="200M" overflowToDisk="false" eternal="false" timeToIdleSeconds="240" timeToLiveSeconds="360" memoryStoreEvictionPolicy="LRU" />
缓存管理器级别没有指定的配置。
我们缓存的 class 就像:
public class ProductStock {
private long productId;
private int productCount;
private int pickingCount;
private int lackType;
private int areaSale;
//getter and setter....
}
我们研究了ehcache的对象大小估计方法,它使用google的sizeof-agent.jar.
我们使用 sizeof-agent.jar 进行测试。我们 class 的实例堆大小约为 40 字节。 100万乘以40M,比我们配置的200M少很多
另外,我们搜索了ehcache(2.8.5)的源码,也没有发现100万的限制。另外,我们在eclipse调试模式下检查了我们的ehcachemanager实例的配置,maxEntriesOnHeap为0,这意味着没有限制。
这是有线的,有没有我们遗漏的信息?监控图的内涵对吗?
据我所知,没有 1 000 000 个条目的限制。你能提供完整的ehcache.xml
吗?
您看过 JMX 统计数据了吗?有驱逐吗?