一、kafka 的 Java heap space 配置
Kafka :Java heap space 原先配置是512M,先改为2G.
消费的数据量过大时,很容易出现下面的问题。导致消费的数据发送不到本地kafka。
二、.远程生产或者消费社区版kafka需要配置:0.9.0.0
listeners=PLAINTEXT://0.0.0.0:9092
默认的配置是listeners=PLAINTEXT://localhost:9092,导致其他机器不能同9092端口,需要配置0.0.0.0去放通9092端口。
三、Kafka集群优化设置的参数
num.network.threads=9 (CPU数+1)默认是3
num.io.threads=16 (CPU数2到3倍)默认是8
# 每当producer写入10000条消息时,刷数据到磁盘
log.flush.interval.messages=10000
# 每间隔1秒钟时间,刷数据到磁盘
log.flush.interval.ms=1000
#默认是16384,有点小
batch.size = 100000
#加快备份的复制速度
num.replica.fetchers=4
Linux系统:
/etc/sysctl.conf
vm.swappiness = 1
vm.dirty_background_ratio = 5
vm.dirty_ratio = 60 # cat /proc/vmstat |grep nr_writeback
net.core.rmem_default = 256960
net.core.rmem_max = 513920
net.core.wmem_default = 256960
net.core.wmem_max = 513920
net.ipv4.tcp_mem = 131072 262144 524288
net.ipv4.tcp_rmem = 8760 256960 4088000
net.ipv4.tcp_wmem = 8760 256960 4088000
使用命令" sysctl –p "使之立即生效。
Java:
vim /root/.bash_profile
export KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+DisableExplicitGC -Djava.awt.headless=true"
source /root/.bash_profile
主要参考一下两篇文章:
https://www.iteblog.com/archives/1879.html
http://www.cnblogs.com/fczjuever/archive/2013/04/17/3026694.html
四、使用Jconsole监控kafka
cdh 安装的kafka默认是开启jmx功能,配置的端口是9393
使用Java自带的工具JConsole可以查看kafka 相关性能参数
C:\Program Files\Java\jdk1.7.0_79\bin