2014-12-03 32 views
2

我使用兵马俑企业级Ehcache与Java应用程序一起,但在一天的某些时刻,其秦始皇开始花费太多的时间来回答PUT/GET请求,有时锁定客户的线程和启动的异常。陶土的Ehcache锁定客户

我的基础设施是由5个的JBoss服务器6.2.0群集并用4陶土企业级Ehcache 3.7.5存储大量数据的另一集群组成。

该应用程序每天大约有1000万次访问兵马俑Ehcache。

  • 本来我使用的标准,但是,当问题开始时,我改变了一切只使用id搜索。

  • 我试图改变DGC间隔,使其运行更加频繁,甚至每天只有一次,它没有得到任何好转。

  • 我开始与余辉模式永久存储和试图改变临时交换只,但问题仍然存在。

  • 试图改变陶土集群2吨的活性物质的机器和2个无源器件或4层的活性物质的工作。

  • 试图配置我的缓存为永恒的真或假。

  • 我所有的缓存是不间断的,我试图用timeoutBehavior作为例外或空操作。

基本上没有我的努力似乎产生任何显著变化和兵马俑继续在此状态下,不能回答的请求不再进入。

现在,似乎“解决”问题的唯一方法是重新启动所有客户端。

有没有人有类似的情景使用兵马俑,这种吞吐量?任何想法现在在哪里看?

回答

0

是的,我面临类似的问题,在terracota群集设置上的线程争用。从属请求获取/放置过去需要时间,并且线程转储显示锁定是主要原因。因为它已经超过4-6个月了,所以我不记得这些细节。我有2个选项,则:

  • 创建这将是一个自定义的战争,将下方运行的Ehcache和揭露我自己放,获取,删除等操作的REST端点一个自己的缓存服务器。
  • 使用ehcache提供的缓存复制。

我第一次尝试复制起诉RMI,然后与JGroups。基于RMI的方法非常出色,而且非常稳定,所以我决定转向基于RMI的复制,ehcache提供了OOTB。我的设置是使用ehcache作为基于hibernate的JPA缓存提供程序,并且RMI absed解决方案工作得非常好而且有效。它足够智能,可以查看集群中的其他服务器何时关闭以及何时启动。复制是异步和透明的。由于第二种方法运作良好,我没有尝试第一种方法。

+0

感谢您的回答@Nazgul,我将在通过RMI更改复制之前尝试更多的Terracotta Enterprise集群,但我会考虑这一点! – 2014-12-05 15:29:01