设置:
我总共有7个节点,构成一个hazelcast群集。 其中5位是CP成员。群组大小设置为3。 其他值得注意的配置更改:setSessionTimeToLiveSeconds(200),setMissingCPMemberAutoRemovalSeconds(240)。
用法: 我有8个客户端尝试获取长键的栅栏锁,该接口缓存了5分钟。密钥几乎总是不同的,但是在某些情况下,对于同一密钥我们会收到许多操作,因此我们希望避免对这些密钥进行异步更新。 过去,我为此使用IMap,但我注意到它并不总是尊重锁。栅栏锁在达到一定的内存使用率之前似乎表现良好。
问题: 我观察到的是,一个cp成员的使用率很高,而G1 Old Gen堆随着时间的推移是如此之小。一天之内达到5GB。即使我停止了锁定请求,也永远不会清除内存。
我试图创建两个组来利用群集中的更多节点,这确实有所帮助,但是问题仍然存在,一些节点上的已用堆随着时间的推移而增加,并且有时它们变得非常慢。
问题: 我究竟做错了什么?这甚至是此工具的有效用例吗?
答案 0 :(得分:1)
锁对象不会自行失效,Hazelcast不会自动对未使用的锁执行垃圾回收。如果您不再需要锁,则可以使用lock.destroy()
来销毁它,否则就有可能碰上OOME。