You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka发送消息至test-topic时出现TimeoutException错误求助

Kafka生产者发送超时(TimeoutException)排查与解决

问题重现

执行以下命令启动生产者与消费者:

kafka-console-producer.bat --broker-list 127.0.0.1:9092 --topic test-topic 

kafka-console-consumer.bat --bootstrap-server 127.0.0.1:9092 --topic test-topic --from-beginning

发送消息时触发错误:

ERROR Error when sending message to topic test-topic with key: null, value: 2 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for test-topic-0:120001 ms has passed since batch creation

当前server.properties配置:

broker.id=1
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://127.0.0.1:9092

num.network.threads=3
num.io.threads=8

socket.send.buffer.bytes=102400

socket.receive.buffer.bytes=102400

socket.request.max.bytes=104857600

log.dirs=D:/DataMining/kafka_2.12-3.5.1/kafka-logs

num.partitions=1

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

offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1

log.retention.hours=168

log.retention.check.interval.ms=300000

zookeeper.connect=localhost:5181

zookeeper.connection.timeout.ms=18000

group.initial.rebalance.delay.ms=0

排查与解决方案

1. 确认Kafka Broker运行状态

  • 执行jps命令,检查是否存在Kafka进程。若未运行,启动Kafka服务:
    .\bin\windows\kafka-server-start.bat .\config\server.properties
    
  • 查看Kafka日志目录(D:/DataMining/kafka_2.12-3.5.1/kafka-logs)下的启动日志,确认无ZooKeeper连接失败、目录权限不足等报错。

2. 验证ZooKeeper连接有效性

  • 启动ZooKeeper客户端,检查Kafka Broker注册状态:
    .\bin\windows\zookeeper-shell.bat localhost:5181
    
  • 在客户端中输入ls /brokers/ids,若返回[1](与配置的broker.id=1对应),说明Kafka已成功注册到ZooKeeper。

3. 检查端口连通性

  • 用PowerShell测试9092端口是否开放:
    Test-NetConnection 127.0.0.1 -Port 9092
    
  • 执行netstat -ano | findstr 9092,确认Kafka进程正在监听该端口,同时检查防火墙是否拦截了9092端口。

4. 临时调整生产者超时参数测试

  • 启动生产者时延长超时时间,验证是否为参数配置过短导致:
    kafka-console-producer.bat --broker-list 127.0.0.1:9092 --topic test-topic --producer-property delivery.timeout.ms=300000 --producer-property request.timeout.ms=60000
    
  • 若调整后能正常发送消息,需进一步排查Broker端的性能或连接问题,而非仅依赖参数调整。

5. 检查日志目录权限

  • 确认D:/DataMining/kafka_2.12-3.5.1/kafka-logs目录具备读写权限,Kafka需写入日志文件到该目录,权限不足会导致Broker无法处理消息。

6. 重置Kafka元数据(极端场景)

  • 若以上操作无效,尝试重置元数据:
    1. 停止Kafka与ZooKeeper服务
    2. 删除kafka-logs目录下所有文件
    3. 启动ZooKeeper,执行zookeeper-shell.bat localhost:5181,输入rmr /brokers删除Broker注册信息
    4. 重新启动Kafka,创建测试主题后再尝试发送消息

内容的提问来源于stack exchange,提问作者Nico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 10:00:58