【发布时间】:2019-01-29 03:38:19
【问题描述】:
我在 Hibernate 5.3.2 和 Hazelcat 3.10.4 版本中使用带有 Hazelcast 的 Hibernate L2 缓存,带有 hazelcast-all 和 hibernate-jcache 依赖项以及 5.0.6 中的 Spring。还尝试了最近的 Hibernate 5.4.0 和 Hazelcat 3.11.1。
我有一个不太复杂或深度的 ERM,数据库中大约有大约 7000 个(缓存)对象。我使用 @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) 配置了实体和集合,并且很好地针对在获取缓存数据时不会执行单个 sql。
到目前为止还不错,但性能无法接受,例如没有 L2 缓存 ~4s 来获取实体,使用 Hazelcast L2 缓存完全没有性能提升!
使用 Ehcache(在我的集群环境中不是一个选项),在相同的查询和相同的 Hibernate 配置(只是更改了“hibernate.cache.region.factory_class”)下,性能非常好,不到 500 毫秒。
据我所知,原因不可能是集群网络流量,因为在我的本地机器上它已经很慢了,只有 1 个结。
Hazelcast 配置没什么特别的,Hazelcast L2 客户端配置看起来像这样
<hazelcast-client xsi:schemaLocation="http://www.hazelcast.com/schema/client-config hazelcast-client-config-3.10.xsd"
xmlns="http://www.hazelcast.com/schema/client-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<instance-name>hazelcast-l2-client</instance-name>
<group>
<name>${HZGroupName}</name>
<password>${HZGroupPassword}</password>
</group>
<network>
<cluster-members>
<address>${HZLocalAddress}</address>
<address>${HZMemberAddress}</address>
</cluster-members>
</network>
</hazelcast-client>
休眠配置
jpaAdditionalProperties.setProperty("hibernate.cache.region.factory_class", "org.hibernate.cache.jcache.JCacheRegionFactory");
jpaAdditionalProperties.setProperty("hibernate.cache.use_query_cache", "true");
所以我现在有点无能为力,不敢相信 Hazelcast 这么慢,可能我错过了加快速度的配置。有人可以给我一个提示吗?
谢谢
【问题讨论】:
-
jpaAdditionalProperties.setProperty("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.EhCacheRegionFactory");?你确定你不应该在这里引用一些与 Hazelcast 相关的类吗? -
是的,抱歉,我已将其更正为 org.hibernate.cache.jcache.JCacheRegionFactory
-
您能否确认这些条目是从 Hazelcast 写入/读取的?您可以配置管理中心 URL 并从那里进行检查。
-
看起来 Hazelcast 可能根本无法使用 - 因为没有性能变化 - 您是否检查过文档并确保您的设置正确? github.com/hazelcast/hazelcast-hibernate/blob/master/README.md
-
使用了Hazelcast L2,数据肯定来自缓存。您可以在 Mancenter 中查看缓存和预热:drive.google.com/file/d/1wKq6rDMJdOvM_QmKO-5q25c6PyW7E7Kn/… 以及休眠日志中的缓存未命中和命中:drive.google.com/file/d/1HdP0PwvnmTJYL2CWFzeNSwuSTqBZibS-/… 您还可以查看 xrebel 分析的屏幕截图:drive.google.com/file/d/1FEtb1rW-zwyIr2hIBo8bVwEp8VSvjztO/…
标签: java spring hibernate hazelcast