【问题标题】:-Xms option seems to ignored on gke but -Xmx is working-Xms 选项似乎在 gke 上被忽略了,但 -Xmx 正在工作
【发布时间】:2021-06-26 07:03:03
【问题描述】:

我在 GKE 集群上运行 java 应用程序(ksqldb 0.15.0),并通过了 java opts -Xms3G-Xmx5G

-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/logs -Dlog4j.configuration=file:/etc/ksqldb/log4j.properties -Dksql.server.install.dir=/usr -Xlog:gc*:file=/usr/logs/ksql-server-gc.log:time,tags: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。
但是,NGCMX + OGCMX 的总和是 5242880(=5GB),所以 -Xmx 选项正确生效。

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

我错过了什么吗?

【问题讨论】:

  • 你能分享你的 pod/rs/deployment yaml 吗?
  • 你能添加你的清单文件吗?据我所知,您可以使用KSQL_HEAP_OPTS 环境变量来配置KSQL JVM Heap。您确定这是获取初始堆大小的正确方法吗?试试jinfo <PID> | grep "InitialHeapSize\|MaxHeapSize" 命令。
  • @matt_j 我试过了,结果是InitialHeapSize=3221225472 -XX:+ManagementServer -XX:MaxHeapSize=5368709120,所以我发现设置正确应用了。谢谢!

标签: java kubernetes jvm heap-memory ksqldb


【解决方案1】:

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

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

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

NGC + OGC = 1572864 + 1572864 KB = 3 GB

【讨论】:

  • 谢谢,我误解了这些数字的含义。
猜你喜欢
  • 1970-01-01
  • 2012-08-01
  • 2022-01-19
  • 2011-03-06
  • 2022-01-23
  • 2021-10-28
  • 2016-09-30
  • 2012-03-11
  • 1970-01-01
相关资源
最近更新 更多