Hazelcast CP子系统FencedLock内存使用情况

设置:

  • Hazelcast:3.12.3
  • Spring Boot:2.1.6
  • Java:1.8
  • Args:-XX:+ UseG1GC
  • Xms7g -Xmx7g它们正在Docker中运行:openjdk:8
  • 它们在专用的vmware节点CentOS 7.5.1804中运行

我总共有7个节点,构成一个hazelcast群集。 其中5位是CP成员。群组大小设置为3。 其他值得注意的配置更改:setSessionTimeToLiveSeconds(200),setMissingcpmemberAutoRemovalSeconds(240)。

用法: 我有8个客户端尝试获取长键的栅栏锁,该接口缓存了5分钟。密钥几乎总是不同的,但是在某些情况下,对于同一密钥我们会收到许多操作,因此我们希望避免对这些密钥进行异步更新。 过去,我为此使用IMap,但我注意到它并不总是尊重锁。栅栏锁在达到一定的内存使用率之前似乎表现良好。

问题: 我观察到的是,一个cp成员的使用率很高,而G1 Old Gen堆随着时间的推移是如此之小。一天之内达到5GB。即使我停止了锁定请求,也永远不会清除内存。

Hazelcast CP子系统FencedLock内存使用情况

我试图创建两个组来利用群集中的更多节点,这确实有所帮助,但是问题仍然存在,一些节点上的已用堆随着时间的推移而增加,并且有时它们变得非常慢。

问题: 我究竟做错了什么?这甚至是此工具的有效用例吗?

zerowang1985 回答:Hazelcast CP子系统FencedLock内存使用情况

锁对象不会自行失效,Hazelcast不会自动对未使用的锁执行垃圾回收。如果您不再需要锁,则可以使用lock.destroy()来销毁它,否则就有可能碰上OOME。

本文链接:https://www.f2er.com/3093747.html

大家都在问