【发布时间】: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