求助>-Xms 选项好像在 GKE 上被忽略,但 -Xmx 生效了>
1回复

-Xms 选项好像在 GKE 上被忽略,但 -Xmx 生效了



我在 GKE 集群上运行 java 应用(ksqldb 0.15.0),配置了 -Xms 3G , -Xmx 5G。

-Xmx 运行正常,但 -Xms 好像没生效。

运行命令如下:

java -cp /usr/share/java/ksqldb-rest-app/*: -Xms3G -Xmx5G -server -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+ExplicitGCInvokesConcurrent -XX:NewRatio=1 -Djava.awt.headless=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dksql.log.dir=/usr/ 日志 -Dlog4j.configuration=file:/etc/ksqldb/log4j.properties -Dksql.server.install.dir=/usr -Xlog:gc*:file=/usr/logs/ksql-server-gc.log:time, 标签:filecount=10,filesize=102400 io.confluent.ksql.rest.server.KsqlServerMain /etc/ksqldb/ksqldb-server.properties

我用了 jstat 来排查,结果如下;

NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC CGC
192 2621440 1572864 157248 157248 1258368 64 2621440 1572864 1572864 0 1163264 132268 0 1048576 18828 505 0 4

NGCMN + OGCMN 的期望值为 3145728(=3GB),但实际值为 256。
但是 NGMCX + OGCMX 的总和是 5242880(=5GB),所以 -Xmx 正确生效。

运行 Pod 的主机有 15GB 的物理内存。

我漏掉什么了吗?

582 阅读
请先登录,再评论

回复列表

-Xms 设置初始堆大小,而不是最小大小。

NGCMN 和 OGCMN 分别表示新生代和老年代的最小容量。 大多数情况下,这些数字是无用的。 你可能想看的是NGC/OGC——新生代和老一代的当前容量。

你已经设置了 -Xms3G,当前的堆大小正好是

NGC + OGC = 1572864 + 1572864 KB = 3 GB