我有:
a) 1个运行hazelcast节点的服务器(4vcpu,8GB),
b) 1台服务器(4vcpu,8GB)在tomcat 7上运行hazelcast mancenter。
两台服务器都在同一个本地网络中。
我测试了两种情况:
情景1)我已经开始a)和b)。没有数据转移。 a)的cpu使用率为0-10%
场景2)我已经开始a)和b)。我已经转移了大量数据来处理a)并等到它完成(2h)。当没有数据要处理时我已经检查了a)上的cpu使用情况 - 它是30-110%(即使在8h之后)。当我停止进入b)a)cpu下降到0-10%。再次开始后,它升至30-110%。
我认为a)在1)和2)之后的cpu使用应该是相同的。
我已经对jvm进行了分析,并注意到一个名为 MC.State.Sender 的线程在场景1中处于非活动状态并在场景2中处于活动状态。这可能会耗尽CPU吗?这可以通过配置来限制吗?
请提前获取任何帮助。
以下是来自visualvm的线程转储(我也可以提供cpu profiler快照):
scenario1 thread dump
scenario2 thread dump
答案 0 :(得分:1)
使用Hazelcast 3.4和Mancenter 3.4.1时,我注意到了这个问题。
将Hazelcast lib更新为3.4.1后,我无法重复此问题。
我整整一周都在进行不同的测试,但问题并没有再次发生。
解决方案是将mancenter和Hazelcast lib保持在同一版本中。