【发布时间】:2012-08-07 23:10:30
【问题描述】:
我的 JVM 堆最大值在我的一个 hadoop 集群的名称节点上配置为 8GB。当我使用 JMX 监控 JVM 时,报告的最大值不断波动,如附图所示。
http://highlycaffeinated.com/assets/images/heapmax.png
我只在我的一个(最活跃的)hadoop 集群上看到这种行为。在其他集群上,报告的最大值固定在配置的值。任何想法为什么报告的最大值会改变?
更新:
java版本是“1.6.0_20”
堆的最大值在 hadoop-env.sh 中设置如下:
export HADOOP_NAMENODE_OPTS="-Xmx8G -Dcom.sun.management.jmxremote.port=8004 $JMX_SHARED_PROPS"
ps 显示:
hadoop 27605 1 99 Jul30 ? 11-07:23:13 /usr/lib/jvm/jre/bin/java -Xmx1000m -Xmx8G
更新 2:
昨晚在启动命令行中添加了-Xms8G开关:
export HADOOP_NAMENODE_OPTS="-Xms8G -Xmx8G -Dcom.sun.management.jmxremote.port=8004 $JMX_SHARED_PROPS"
如下图所示,尽管模式似乎发生了变化,但最大值仍然不同。
http://highlycaffeinated.com/assets/images/heapmax2.png
更新 3:
这是一个新的图表,它还显示了非堆最大值,它保持不变:
【问题讨论】:
-
我怀疑这个节点上没有设置 max。如果未设置,JVM 将确定使用多少。什么是java版本?
-
我用 java 版本和最大设置更新了问题。 ps 显示 Xmx 的两个值 - 在所有集群上都是这种方式。第二个值似乎是正在使用的值。
-
您是否尝试设置 Xms 以查看它是否改变了什么?
-
没有尝试过 Xms,但我会试一试。它是一个生产集群,所以我不能经常重启。
-
-Xmx1000m -Xmx8G?-Xmx1000m来自哪里?和其他命令行一样吗?
标签: java jvm heap-memory