Hazelcast 地图内存在增长,而条目数保持稳定

Hazelcast map memory growing while entry numbers stay stable

我们正在使用 Hazelcast 3.3.5 的独立单节点安装来存储一些用户的会话信息,包括已登录和未登录的用户。

我们存储未记录会话的地图设置如下:

使用 Mancenter 进行监控,我们发现条目数稳定在 9.500 左右,但 "Entry Memory" 逐渐增长... 当 Hazelcast 重新启动时,"Entries" 和 "Entry Memory" 的值都是“0”,然后当 "Entries" 达到 9500 的顶部时,"Entry Memory" 的值是 37MB。到目前为止是正确的。 24 小时后,"Entries" 的数量仍然相同,因此驱逐政策工作正常,但 "Entry Memory" 值为 160MB 并且不断增长,直到 Hazelcast 抛出 OutOfMemory 异常。

我们的配置有问题吗? GC 似乎无法释放已删除条目的内存。

有什么想法吗?

提前致谢

我天真地尝试使用 Hazelcast 作为我的主要数据存储 - 替换数据库。一切都很好,直到我将 40K 的 1K 记录放入其中一张地图中。我注意到在 ManCenter 中监视它的第一件事是它用于查询的内存量。它在查询后下降,但我怀疑存在内存泄漏或者它保留了一些数据缓存以避免未来查询的反序列化。所以我确保我明确禁用了 Hazelcast 中的所有近缓存和类似的内部缓存。明确的例如便携式序列化有助于减少内存占用。也看看内部存储格式。 10K 条记录的 37M 无论如何都相当高,但这是保持 session/user 上下文较小(低于 15K)的单独架构问题 - 仅存储相关信息。

同样,我将它用作数据库,而不是缓存,所以我没有任何驱逐。也许那里确实存在错误(内存泄漏)。我会尝试测试它 w/o eviction/TTL。