设置:
- 榛树:3.12.3
- 春季启动:2.1.6
- 爪哇:1.8
- 参数:-XX:+UseG1GC
- Xms7g -Xmx7g 这些在 Docker 中运行:openjdk:8
- 它们在专用的 vmware 节点 CentOS 7.5.1804 中运行
我总共有 7 个节点组成了一个 hazelcast 集群。其中5人是CP成员。组大小设置为 3。其他值得注意的配置更改:setSessionTimeToLiveSeconds(200)、setMissingCPMemberAutoRemovalSeconds(240)。
用法:我有 8 个客户端尝试获取 Long key 的防护锁,接口缓存 5 分钟。键几乎总是不同的,但在某些情况下,我们会收到同一个键的许多操作,我们希望避免这些键的异步更新。过去我为此使用 IMap,但我注意到它并不总是尊重锁。Fenced 锁在达到一定的内存使用率之前似乎表现得非常好。
问题:我观察到一个 cp 成员被大量使用,并且 G1 Old Gen 堆随着时间的推移而略微增加。一天之内就达到了 5GB。即使在我停止锁定请求之后,内存也永远不会被清除。
我尝试创建两个组以利用集群中的更多节点,它确实有帮助,但问题仍然存在,一些节点上的已用堆随着时间的推移而增加,并且有时它们变得非常慢。
问题:我做错了什么?这甚至是该工具的有效用例吗?