系统相关参数
配置 | 配置详解 |
---|---|
broker.id = 1
|
## 每一个broker在集群中的唯一标示,要求是正数。在改变IP地址,不改变broker.id的话不会影响consumers |
log.dirs = /tmp/kafka-logs |
## kafka数据的存放地址,多个地址的话用逗号分割 /tmp/kafka-logs- 1 ,/tmp/kafka-logs- 2
|
port = 6667
|
## 提供给客户端响应的端口 |
message.max.bytes = 1000000
|
## 消息体的最大大小,单位是字节 |
listeners=PLAINTEXT://:9092 | ## 监听列表(以逗号分隔 不同的协议(如plaintext,trace,ssl、不同的IP和端口)) 如果设置为0.0.0.0则绑定所有的网卡地址 |
num.network.threads = 3
|
## 用于接收并处理网络请求的线程数,默认为3。其内部实现是采用Selector模型。启动一个线程作为Acceptor来负责建立连接,再配合启动num.network.threads个线程来轮流负责从Sockets里读取请求,一般无需改动,除非上下游并发请求量过大。一般num.network.threads主要处理网络io,读写缓冲区数据,基本没有io等待,配置线程数量为cpu核数加1. |
num.io.threads = 8
|
## num.io.threads主要进行磁盘io操作,高峰期可能有些io等待,因此配置需要大些。配置线程数量为cpu核数2倍,最大不超过3倍. |
background.threads = 4
|
## 一些后台任务处理的线程数,例如过期消息文件的删除等,一般情况下不需要去做修改 |
queued.max.requests = 500
|
## 等待IO线程处理的请求队列最大数,若是等待IO的请求超过这个数值,那么会停止接受外部消息,算是一种自我保护机制.这个参数是指定用于缓存网络请求的队列的最大容量,这个队列达到上限之后将不再接收新请求。一般不会成为瓶颈点,除非I/O性能太差,这时需要配合num.io.threads等配置一同进行调整。 |
host.name | ## broker的主机地址,若是设置了,那么会绑定到这个地址上,若是没有,会绑定到所有的接口上,并将其中之一发送到ZK,一般不设置 |
socket.send.buffer.bytes=102400 | ## socket的发送缓冲区,socket的调优参数SO_SNDBUFF |
socket.receive.buffer.bytes=102400 | ## socket的接受缓冲区,socket的调优参数SO_RCVBUFF |
socket.request.max.bytes=104857600 | ## socket请求的最大数值,防止serverOOM,message.max.bytes必然要小于socket.request.max.bytes,会被topic创建时的指定参数覆盖 |
Kafka深入-kafka如何调优_诺浅的专栏-CSDN博客_num.recovery.threads.per.data.dir配置参数调优broker配置num.recovery.threads.per.data.dir对于如下 3 种情况,Kafka 会使用可配置的线程池来处理日志片段:服务器正常启动,用于打开每个分区的日志片段;服务器崩溃后重启,用于检查和截短每个分区的日志片段;服务器正常关闭,用于关闭日志片段。默认情况下,每个日志目录只使用一个线程。因为这些线程只是在服务器启动和关闭时会用到,所以...https://blog.csdn.net/qq32933432/article/details/96479411Kafka的安装、管理和配置_BXS-CSDN博客_num.recovery.threads.per.data.dir在了解了Kafka基本概念中,我们就来安装Kafka,Kafka是用Scala语言进行编写,是Java生态圈下的一员,运行在Java虚拟机上,所以其安装起来也是比较简单的。其官方推荐安装Kafka为Java8的环境。另外Kafka需要Zookeeper保存集群的元数据信息和消费者信息,其和Zookeeper是强依赖关系,所以Kafka一般会自带Zookeeper,我们可以从解压后的Kafka的目录下看到,如下:但是从稳定性考虑,应该使用单独的Zookeeper,而且构建Zookeeper集群,一般在https://blog.csdn.net/newbie0107/article/details/107029299
delete.topic.enable=true ; auto.create.topics.enable=false ; 只有这两个参数同时开启,kafka-manager才可以将某个topic删除干净。
auto.create.topics.enable意思是:produce可以推送消息到一个不存在的topic(即:发消息到一个不存在的topic,系统会帮你按默认参数自动帮你建立这个topic),所以只要这个topic有produce向它推送消息,那么这个topic你是没办法被删除的。
通过kafka-manager删除时,如果删掉了,那么肯定是删干净了(有一定延迟,先标记删除,然后等空闲时间自行进行其他信息删除,这一漫长的过程也可能会造成没删干净的假象);如果没删掉,这个topic会被标红(后台逻辑是:已经标记为删除了,数据也删了,但在状态跟实际校验时发现并没有被删除,原因是被produce很快重建了,此时就出现了没删干净的状态,表现为:你新建时提示它已经存在,你删除时它提示已经标记为删除)
zookeeper配置
tickTime=2000 ##指 zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔。单位ms
initLimit=10 ##用来指定zookeeper 集群中leader接受follower初始化连接时最长能忍受的心跳时间间隔数。若超过 指定个心跳的时间间隔leader还没有收到follower的响应,表明follower连接失败。
syncLimit=5 ##指定 leader与follower之间请求和应答时间最长不能超过多少个 tickTime。5*2000=10s
dataDir=/data/zookeeper ##快照日志的存储路径。
clientPort=2181 ##客户端连接 zookeeper 服务器的端口,默认为2181
maxClientCnxns=3000
minSessionTimeout=4000 ##Session超时时间限制,如果客户端设置的超时时间不在这个范围,那么会被强制设置为最大或最小时间。
maxSessionTimeout=180000
autopurge.purgeInterval=24 ##清理日志频率,单位小时
autopurge.snapRetainCount=5 ##搭配上条配置,保留文件数据为5个
server.1=nm-bigdata-kafka01.e.189.cn:2888:3888 ##这个1是服务器的标识也可以是其他的数字,这个标识要写到dataDir目录下面myid文件里。
server.2=nm-bigdata-kafka02.e.189.cn:2888:3888 ##hostname后面的第一个端口2888主要用于leader和follower之间的通信,第二个端口3888主要用于选主
server.3=nm-bigdata-kafka03.e.189.cn:2888:3888
leaderServes=yes ##Leader是会接受客户端连接,并提供正常的读写服务。