EHcache使用磁盘存储缓存的性能

时间:2016-01-19 05:30:54

标签: ehcache spring-cache

我们在我们的应用程序中使用ehcache。请查看以下配置:

<diskStore path="java.io.tmpdir" />
<cache name="service" maxElementsInMemory="50000" eternal="true" overflowToDisk="true"/>

由于我们已经配置为eternal =“true”,它是否会永远创建缓存?是否有可能耗尽磁盘空间?

对磁盘存储的性能影响是什么?它肯定比内存缓存慢,但影响有多大。

如果磁盘中存储了更多缓存,是否会导致执行多个文件操作的IO问题?

请为生产级应用建议最佳实践。考虑到我们有3 GB的堆内存和25000个并发用户访问应用程序。但是,我们的应用程序中没有使用数据库。

该应用程序部署在WAS 8.5.5中。

1 个答案:

答案 0 :(得分:2)

eternal=true表示映射永不过期。

overflowToDisk=true表示放入缓存中的所有映射最终将写入磁盘,从缓存中的第一个映射开始。当前的Ehcache分层模型(自2.6.0版本开始)总是使用较慢的存储 - 磁盘 - 以便为您提供可预测的延迟。访问映射时,它会出现故障进入堆中以便更快地进行检索。如果堆中的映射太多,则从堆中驱逐以根据maxElementsInMemory保持堆缓存大小。

如果您没有通过设置maxElementsLocalDisk来调整磁盘存储的大小,则默认为0,这意味着没有限制。所以,如果您从未明确删除缓存条目,则可能会耗尽磁盘空间。

如果不知道应用程序的详细信息,很难建议适当的缓存大小。我建议您测量堆和磁盘使用情况,并评估增加的内存使用量何时超过性能增益。