ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

kafka相关参数调优

2022-02-24 15:04:53  阅读:310  来源: 互联网

标签:请求 -- max bytes kafka 调优 参数 ms replica


1. 消息大小限制调整

message.max.bytes (broker配置)
max.message.bytes (topic配置)

可以在创建topic的时候增加这个配置:

> bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic my-topic --partitions 1 \
--replication-factor 1 --config max.message.bytes=64000

或者在现有的topic添加自定义配置:

> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name my-topic
--alter --add-config max.message.bytes=128000

还有我们要确保replica.fetch.max.bytes比以上两个值都大,要不然生成大的消息的时候还是会报错。

参考博客

https://stackoverflow.com/questions/65631999/why-is-replica-fetch-bytes-greater-than-max-message-bytes-allowed

2,Replica副本相关:

num.replica.fetchers=1

用于从broker复制消息的 fetcher 线程数。 增加这个值可以增加follower broker中的I/O并行度。

replica.fetch.max.bytes=1048576

尝试为每个分区获取的消息字节数。 这不是一个绝对最大值,如果 fetch 的第一个非空分区中的第一个记录批大于此值,仍将返回记录批以确保可以进行进度。 broker接受的最大记录批量大小通过 message.max.bytes(broker配置)或 max.message.bytes(topic配置)定义。

replica.fetch.wait.max.ms=500

跟随者副本发出的每个 fetcher 请求的最大等待时间。 此值应始终小于 replica.lag.time.max.ms 以防止 ISR 频繁收缩低吞吐量主题

replica.high.watermark.checkpoint.interval.ms=5000

将副本保存到磁盘的频率

replica.socket.timeout.ms=30000

网络请求的套接字超时。 它的值至少应该是 replica.fetch.wait.max.ms

replica.socket.receive.buffer.bytes=65536

网络请求的套接字接收缓冲区

controller.socket.timeout.ms=30000

控制器到broker的套接字超时

num.recovery.threads.per.data.dir=4

每个数据目录的线程数,用于在启动时恢复日志并在关闭时刷新。
*partition数量多的话非常建议调大此值,建议4以上

replica.socket.receive.buffer.bytes=4096000

网络请求的套接字接收缓冲区

3.Zookeeper相关

zookeeper.connection.timeout.ms=6000

客户端等待与 Zookeeper 建立连接的最长时间。 如果未设置,则使用 zookeeper.session.timeout.ms 中的值

zookeeper.sync.time.ms=2000

ZK 追随者可以落后于 ZK 领导者多远

4.套接字服务相关配置

num.io.threads=5

服务器用于处理请求的线程数,可能包括磁盘 I/O

num.network.threads=8

服务器用于接收来自网络的请求并向网络发送响应的线程数

socket.request.max.bytes=104857600

套接字请求中的最大字节数

socket.receive.buffer.bytes=1048576

网络请求的套接字接收缓冲区

socket.send.buffer.bytes=1048576

网络请求的套接字发送缓冲区

queued.max.requests=500

在阻塞网络线程之前,数据平面允许的排队请求数

5.Producer常用参数:

linger.ms=50
生产者将在请求传输之间到达的任何记录组合成一个批处理请求
batch.size=524288
每当多个记录被发送到同一个分区时,生产者将尝试将记录一起批处理成更少的请求。
compression.type=lz4
指定给定topic的最终压缩类型。 此配置接受标准压缩编解码器('gzip'、'snappy'、'lz4'、'zstd')。 它还接受相当于不压缩的“未压缩”; 和“生产者”,这意味着保留生产者设置的原始压缩编解码器。
acks=1
生产者要求领导者在考虑完成请求之前收到的确认数量。这控制了发送的记录的持久性
max.request.size=5242880
请求的最大大小(以字节为单位)。
buffer.memory=268435456
生产者可用于缓冲等待发送到服务器的记录的内存总字节数。
max.in.flight.requests.per.connection
客户端在阻塞之前将在单个连接上发送的未确认请求的最大数量。

6.Consumer常用参数:

bootstrap.servers
Kafka群集信息列表,用于连接kafka集群,如果集群中机器数很多,只需要指定部分的机器主机的信息即可,不管指定多少台
group. id
标识一个consumer组的名称
key.deserializer
消息key反序列化器
value.deserializer
消息value反序列化器
session .timeout.ms
消费者和群组协调器的最大心跳时间,如果超过该时间则认为该消费者已经死亡或者故障,需要提出消费者组
max.poll.interval .ms
一次poll间隔最大时间
auto.offset.reset
当消费者读取偏移量无效的情况下,需要重置消费起始位置,默认为latest(从消费者启动后生成的记录),另外一个选项值是 earliest,将从有效的最小位移位置开始消费
enable.auto.commit
consumer提交方式设置
fetch.max.bytes
consumer端一次拉取数据的最大字节数
max.poll.records
consumer端一次拉取数据的最大条数
connections.max.idle .ms
consumer默认和kafka broker建立长连接,当连接空闲时间超过该参数设置的值,那么将连接断开,当使用时,在进行重新连接

7. Linux系统TCP层面的调优建议

可以参考

https://docs.cloudera.com/documentation/enterprise/latest/topics/kafka_system_level_broker_tuning.html#networking_parameters
https://docs.cloudera.com/documentation/other/reference-architecture/PDF/cloudera_ref_arch_metal.pdf

标签:请求,--,max,bytes,kafka,调优,参数,ms,replica
来源: https://blog.csdn.net/battybaby/article/details/123111312

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有