焦作企业网站建设,建站宝盒是什么,wordpress页面伪静态,江苏个人网站备案1、kafka config服务端配置文件server.properties server.properties中加上的message.max.bytes配置#xff0c;我目前设置为5242880#xff0c;即5MB#xff0c;可以根据实际情况增大。
message.max.bytes5242880 在生产者端配置max.request.size#xff0c;这是单个消息…1、kafka config服务端配置文件server.properties server.properties中加上的message.max.bytes配置我目前设置为5242880即5MB可以根据实际情况增大。
message.max.bytes5242880 在生产者端配置max.request.size这是单个消息最大字节数根据实际调整max.request.size 必须小于 message.max.bytes 以及消费者的 max.partition.fetch.bytes。这样消息就能不断发送。
2、重启kafka服务
3、生产者配置
# 发送所有ISR
acksall
# 重试次数
retries2
# 批量发送大小(128KB)
batch.size131072
# 消息体大小(5M)
max.request.size5242880
# 缓存大小根据本机内存大小配置(64M)
buffer.memory67108864
# 发送频率和batch.size参数满足任一条件发送
linger.ms5
# 发送端id,便于统计(单线程时)
client.idproducer-asyn
# Key序列化
key.serializerorg.apache.kafka.common.serialization.StringSerializer
# Value序列化
value.serializerorg.apache.kafka.common.serialization.StringSerializer
4、springboot kafka 配置 max.request.size
1、在 application.properties 文件中添加如下配置
spring.kafka.producer.max-request-size5242880 2、在 KafkaTemplate 中添加如下配置 MapString, Object configs new HashMap();configs.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 5242880);KafkaTemplateString, String kafkaTemplate new KafkaTemplate(new DefaultKafkaProducerFactory(configs)); 3、在 KafkaProducer 中添加如下配置 Properties props new Properties();props.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 5242880);KafkaProducerString, String producer new KafkaProducer(props);
5、配置类参数设置 Properties props new Properties();props.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, 1048576);props.put(bootstrap.servers, localhost:9092);props.put(key.serializer, org.apache.kafka.common.serialization.StringSerializer);props.put(value.serializer, org.apache.kafka.common.serialization.StringSerializer);props.put(buffer.memory, 67108864);props.put(batch.size, 131072);props.put(linger.ms, 100);props.put(max.request.size, 10485760);props.put(retries, 10);props.put(retry.backoff.ms, 500);props.put(acks, 1);KafkaProducerString, String producer new KafkaProducer(props);
6、参数详解
buffer.memory Kafka的客户端发送数据到服务器不是来一条就发一条而是经过缓冲的也就是说通过KafkaProducer发送出去的消息都是先进入到客户端本地的内存缓冲里然后把很多消息收集成一个一个的Batch再发送到Broker上去的这样性能才可能高。 buffer.memory的本质就是用来约束KafkaProducer能够使用的内存缓冲的大小的默认值32MB。 如果buffer.memory设置的太小可能导致的问题是消息快速的写入内存缓冲里但Sender线程来不及把Request发送到Kafka服务器会造成内存缓冲很快就被写满。而一旦被写满就会阻塞用户线程不让继续往Kafka写消息了。 所以“buffer.memory”参数需要结合实际业务情况压测需要测算在生产环境中用户线程会以每秒多少消息的频率来写入内存缓冲。经过压测调试出来一个合理值。
batch.size 每个Batch要存放batch.size大小的数据后才可以发送出去。比如说batch.size默认值是16KB那么里面凑够16KB的数据才会发送。 理论上来说提升batch.size的大小可以允许更多的数据缓冲在里面那么一次Request发送出去的数据量就更多了这样吞吐量可能会有所提升。 但是batch.size也不能过大要是数据老是缓冲在Batch里迟迟不发送出去那么发送消息的延迟就会很高。 一般可以尝试把这个参数调节大些利用生产环境发消息负载测试一下。
linger.ms 一个Batch被创建之后最多过多久不管这个Batch有没有写满都必须发送出去了。 比如说batch.size是16KB但是现在某个低峰时间段发送消息量很小。这会导致可能Batch被创建之后有消息进来但是迟迟无法凑够16KB难道此时就一直等着吗 当然不是假设设置“linger.ms”是50ms那么只要这个Batch从创建开始到现在已经过了50ms了哪怕他还没满16KB也会被发送出去。 所以“linger.ms”决定了消息一旦写入一个Batch最多等待这么多时间他一定会跟着Batch一起发送出去。 linger.ms配合batch.size一起来设置可避免一个Batch迟迟凑不满导致消息一直积压在内存里发送不出去的情况。
max.request.size 决定了每次发送给Kafka服务器请求消息的最大大小。 如果发送的消息都是大报文消息每条消息都是数据较大例如一条消息可能要20KB。此时batch.size需要调大些比如设置512KBbuffer.memory也需要调大些比如设置128MB。 只有这样才能在大消息的场景下还能使用Batch打包多条消息的机制。 此时“max.request.size”也得同步增加。
retries和retries.backoff.ms 重试机制也就是如果一个请求失败了可以重试几次每次重试的间隔是多少毫秒根据业务场景需要设置。
acks acks 含义0 Producer 往集群发送数据不需要等到集群的返回不确保消息发送成功。安全性最低但是效率最高。1 Producer 往集群发送数据只要 Leader 应答就可以发送下一条只确保 Leader 接收成功。-1 或 all Producer 往集群发送数据需要所有的ISR Follower 都完成从 Leader 的同步才会发送下一条确保 Leader 发送成功和所有的副本都成功接收。安全性最高但是效率最低。
附
Kafka参数调优解决The request included a message larger than the max message size the server will accept._Pallas_Cat的博客-CSDN博客 转载请注明出处BestEternity亲笔。