kafka配置详解

系统相关参数

配置 配置详解
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则绑定所有的网卡地址
如果hostname为空则绑定默认的网卡
如果没有配置则默认为java.net.InetAddress.getCanonicalHostName()

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 会使用可配置的线程池来处理日志片段:服务器正常启动,用于打开每个分区的日志片段;服务器崩溃后重启,用于检查和截短每个分区的日志片段;服务器正常关闭,用于关闭日志片段。默认情况下,每个日志目录只使用一个线程。因为这些线程只是在服务器启动和关闭时会用到,所以...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集群,一般在kafka配置详解https://blog.csdn.net/newbie0107/article/details/107029299

kafka性能调优_#include-CSDN博客kafka是一个高吞吐量分布式消息系统,并且提供了持久化。其高性能的有两个重要特点:利用了磁盘连续读写性能远远高于随机读写的特点;并发,将一个topic拆分多个partition。同一个ConsumerGroup内的Consumer和Partition在同一时间内必须保证是一对一的消费关系任意Partition在某一个时刻只能被一个Consumer Group内的一个Consumer消费(反过kafka配置详解https://blog.csdn.net/vegetable_bird_001/article/details/51858915

 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是会接受客户端连接,并提供正常的读写服务。
 

上一篇:通过实现Runnable接口创建线程过程中的底层机制——设计模式(代理模式)


下一篇:【mysql】Mysql查看连接数(连接总数、活跃数、最大并发数)