JVM参数调优。
默认启动的Broker进程只会使用1G内存,在实际使用中会导致进程频繁GC,影响Kafka集群的性能和稳定性。通过jstat -gcutil
参数的具体含义如下:
[root@master kafka]# jps
4881 QuorumPeerMain
5972 Jps
5711 Kafka
[root@master kafka]# jstat -gcutil 5711 1000
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 100.00 29.79 14.30 91.32 93.12 5 0.103 0 0.000 0.103
0.00 100.00 29.79 14.30 91.32 93.12 5 0.103 0 0.000 0.103
0.00 100.00 29.79 14.30 91.32 93.12 5 0.103 0 0.000 0.103
0.00 100.00 29.79 14.30 91.32 93.12 5 0.103 0 0.000 0.103
0.00 100.00 29.79 14.30 91.32 93.12 5 0.103 0 0.000 0.103
如果你发现YGC很频繁,或者FGC很频繁,就说明内存分配的少了。此时需要修改kafka-server-start.sh中的 KAFKA_HEAP_OPTS
if [ $# -lt 1 ];
then
echo "USAGE: $0 [-daemon] server.properties [--override property=value]*"
exit 1
fi
base_dir=$(dirname $0)
if [ "x$KAFKA_LOG4J_OPTS" = "x" ]; then
export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/log4j.properties"
fi
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi
export KAFKA_HEAP_OPTS="-Xmx10g -Xms10g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
这个配置表示给kafka分配了10G内存,这里的Kafka服务器是16G内存。