-Xms 选项似乎在 gke 上被忽略,但 -Xmx 正在工作
-Xms option seems to ignored on gke but -Xmx is working
我是 GKE 集群上的 运行 java 应用程序(ksqldb 0.15.0),并通过了 java 选项 -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 的物理内存。
我是不是漏掉了什么?
-Xms
设置 初始 堆大小,而不是最小大小。
NGCMN
和OGCMN
分别表示新生代和老年代的最小容量。大多数时候这些数字是无用的。你可能想看的是 NGC
/OGC
- 新一代和老一代的 current 容量。
您已设置-Xms3G
,当前堆大小恰好是
NGC + OGC = 1572864 + 1572864 KB = 3 GB
我是 GKE 集群上的 运行 java 应用程序(ksqldb 0.15.0),并通过了 java 选项 -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 的物理内存。
我是不是漏掉了什么?
-Xms
设置 初始 堆大小,而不是最小大小。
NGCMN
和OGCMN
分别表示新生代和老年代的最小容量。大多数时候这些数字是无用的。你可能想看的是 NGC
/OGC
- 新一代和老一代的 current 容量。
您已设置-Xms3G
,当前堆大小恰好是
NGC + OGC = 1572864 + 1572864 KB = 3 GB