Hazelcast L2缓存缓慢

时间:2019-01-21 07:41:22

标签: java spring hibernate hazelcast

我在Hibernate 5.3.2和Hazelcat 3.10.4中使用了带有Hazelcast的Hibernate L2缓存,具有hazelcast-all和hibernate-jcache依赖关系,而Spring在5.0.6中。还尝试了最新的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”)下,在500ms以下的性能就非常好。

据我所知,原因可能不是群集网络流量,因为在只有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这么慢,可能我错过了加快速度的配置。有人可以给我一个提示吗?

谢谢

1 个答案:

答案 0 :(得分:1)

@Labtax,您也需要设置这些属性,以便您的Hibernate L2缓存使用Hazelcast:

jpaAdditionalProperties.setProperty("hibernate.cache.region.factory_class", "com.hazelcast.hibernate.HazelcastCacheRegionFactory");
jpaAdditionalProperties.setProperty("hibernate.cache.hazelcast.use_native_client", "true");

请尝试使用这些属性。