我们使用的是EhCache 2.6.2。因为我们需要高生存性,所以我们只使用DiskStorage而不使用MemoryStorage。
在程序中的每一次数据更新之后,我们都将数据刷新到磁盘。
一段时间后,cache.data文件超过了1 gb的最大值。当数据文件大小为250MB时,刷新耗时250ms;当数据文件大小为1 1gb时,刷新耗时3.5秒。
我们的对象每个大约有20kb,所以有数百万个。
有没有一种方法可以将数据文件拆分为几个较小的文件,并让EhCache处理?
我们更喜欢只涉及配置更改而不涉及代码更改的解决方案,因为它是在生产环境中。
环境详细信息:
在64位AIX 6.1上运行WebSphere 7、IBM Java1.6和EhCache 2.6.2。
发布于 2014-04-29 16:22:38
在Ehcache2.6.2中,所有缓存数据都将作为storage model changed存储在磁盘上,因此除了使用磁盘存储之外,您还可以通过使用内存存储来提高速度。
当你说:
程序中的每一次数据更新后,我们都会将数据刷新到磁盘。
关于磁盘存储的性能,有一个选项可以尝试:
<cache diskAccessStripes="4" ...>
...
</cache>其中diskAccessStripes属性取2的幂。首先尝试使用较小的值,看看是否有什么收获。此属性的确切效果将取决于许多因素:硬件、操作系统以及应用程序的使用模式。
https://stackoverflow.com/questions/23241706
复制相似问题