首页 > 解决方案 > Kafka kafka-producer-perf-test.sh NetworkException 在收到响应之前服务器断开连接

问题描述

我正在尝试在我们的 kafka 环境中执行基准测试。我一直在使用一些配置,例如 request.timeout.ms 和 max.block.ms ,但无法避免错误:

org.apache.kafka.common.errors.TimeoutException: The request timed out.
org.apache.kafka.common.errors.NetworkException: The server disconnected before a response was received.
org.apache.kafka.common.errors.TimeoutException: Expiring 148 record(s) for benchmark-6-3r-2isr-none-0: 182806 ms has passed since last append

产生性能测试命令:

nohup sh ~/kafka/kafka_2.11-1.0.0/bin/kafka-producer-perf-test.sh --topic benchmark-6p-3r-2isr-none --num-records 10000000 --record-size 100 --throughput 1000 --print-metrics --producer-props acks=all bootstrap.servers=node1:9092,node2:9092,node3:9092 request.timeout.ms=180000 max.block.ms=180000 buffer.memory=100000000 > ~/kafka/load_test/results/6p-3r-10M-100B-t-1-ackall-rto3m-block2m-bm100m-2 2>&1

集群:3 个节点,主题:6 个分区,RF=3 和 minISR=2 我正在使用 tsdb 和 grafana 监控 kafka 指标。我知道磁盘 IO 性能很差 [磁盘等待(1.5 秒),IO 队列大小和磁盘利用率指标很高(60-75%)] 但我在 kafka 日志中没有看到任何可以将慢速磁盘 io 与上述性能错误。

但即使是 1000 条消息/秒,我也会收到错误消息。

需要建议来了解问题并修复上述错误?

我还有另一个非常令人不安的观察。

如果我在不同的主机上使用相同的配置启动 2 个 kafka-producer-perf-test.sh,错误就会消失。如果我取消 1 kafka-producer-perf-test.sh,那么一段时间后,上述错误开始重新出现。

标签: apache-kafka

解决方案


推荐阅读