【问题标题】:Hazelcast (JVM) memory settingsHazelcast (JVM) 内存设置
【发布时间】:2022-01-12 10:44:22
【问题描述】:

我已经安装了一个包含 3 个 hazelcast 节点的集群。 每个 hazelcast 节点都安装在一个专用的 VM 中(使用 centos 7 运行)。 每个 VM 有 16GB RAM 和 15GB HDD。 对于每个 hazelcast 节点,我在 start.sh 脚本中将堆内存大小设置为 MIN HEAP SIZE=8G 和 MAX HEAP SIZE=10G。

但是,当我监控 VM 上的内存使用情况时,它根本不匹配 hazelcast 的堆内存使用情况。 让我举一个例子: 虚拟机显示内存使用率为 80%。但是,当我检查 hazelcast 堆内存使用情况时,它是 45%。就像 VM 内存使用量跟随 hazelcast 的更高内存使用量一样。然后当 GC 在 hazelcast 中启动时,hazelcast 上的堆内存使用量会减少,但 VM 内存使用量永远不会减少。 在 VM 中,我还禁用 THP 并将 swappiness 设置为 10,如性能调整文档 Performance Tuning (hazelcast.com) 中所述

那么我应该为 hazelcast 做哪些配置缺失?我可以/应该做什么?

【问题讨论】:

    标签: java memory-leaks jvm hazelcast


    【解决方案1】:

    这就像 VM 内存使用量跟随 hazelcast 的更高内存使用量一样。那么当 GC 在 hazelcast 中启动时,hazelcast 上的堆内存使用量会减少,但 VM 内存使用量不会减少。

    这是任何 JVM 应用程序的典型行为,并非特定于 Hazelcast。默认情况下,JVM 很少将内存返回给 OS,但可以这样配置。

    参见例如this answer 了解有关特定 JVM 行为的更多详细信息。

    您说您正在为 Hazelcast 使用专用 VM。在这种情况下,将内存返回给操作系统是没有意义的,最好使用相同的 MIN 和 MAX 堆大小,这样在 Hazelcast 运行时就不会调整堆大小。

    【讨论】:

    • 您好 Frantisek,非常感谢您的回答。 hazelcast 建议在托管 hazelcast 的 VM 上禁用它的 swappiness 怎么样?实际上我做了一个禁用swappiness的测试,但它根本不起作用。内存继续增加,直到达到 100%,所以我将其设置回 10。所以如果我很好理解你,我应该为最小和最大堆大小设置相同的值,并且不要将内存返回给操作系统,因为我有一个专门用于 hazelcast 的虚拟机.我应该将 swappiness 设置为 10 还是应该增加它?
    猜你喜欢
    • 2021-02-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多