Hibernate Ehcache集群/复制需要了解

时间:2016-05-03 15:23:26

标签: java hibernate liferay cluster-computing ehcache

我目前在休眠理解方面失去了自己。首先让我解释一下,我的问题。

我们决定为产品添加hibernate共享/群集缓存。我们在测试环境方面没有遇到任何问题,但由于这个修改是在生产中发布的,我们在CPU(至少+ 1 CPU使用),RAM(+1到3 Go)和网络(带宽* 2)上都出现了严重的过载。即使我禁用了hibernate L2缓存和查询缓存。 编辑:在RMI同步调用中,在thread.sleep中花费了60到65%的CPU时间。

我的技术堆栈:

  • Liferay门户网站CE 6.1.1 GE2
  • Ehcache 2.3(似乎不是terracota)
  • Hibernate 3.X(来自liferay dependancies的负载)
  • 对大多数自动创建hibernate堆栈的服务使用liferay构建服务。
  • 群集中的3个节点

现在我将描述我现在所理解的内容:

  • Hibernate L2缓存和查询缓存允许通过在缓存中使用结果来保存数据库查询以避免无用的查询
  • 我使用Ehcache RMI复制到共享缓存
  • 我在休眠中的noob;)

让我看看我的hibernate - 集群配置hibernate-clustered.xml:

                   

<!--
Hibernate will use the defaultCache unless custom configurations are defined
below for individual domain objects, collection, queries, etc.
-->

<defaultCache
    maxElementsInMemory="10000"
    eternal="false"
    timeToIdleSeconds="600"
    overflowToDisk="false"
>
    <cacheEventListenerFactory
        class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
        properties="replicatePuts=false,replicateUpdatesViaCopy=false"
        propertySeparator=","
    />
    <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />
</defaultCache>


    <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory" />
</cache>

我搜索&amp;阅读超过一整天,我仍然怀疑(可能是误解)我的思考过程。我觉得是时候寻求帮助了!

  • 首先,我读了很多关于复制和群集的内容。在我看来,这些概念没有明确定义。这些过程是一样的吗?有什么不同,有利有弊吗?
  • 我读到in some places ehcache(不是terracota ehcache)与群集不兼容,使用它的后果是什么,就像我在小群集中一样,它是否可扩展?
  • 您对我实验的问题有什么看法?如何解释这个开销?

如果您需要更多信息,请与我们联系。

谢谢!

0 个答案:

没有答案