Why am I seeing Receive failed: Disconnected
?
1. broker 的空闲连接回收器关闭不活跃连接。
由 broker 的配置属性 connections.max.idle.ms 控制,默认是 10 分钟。
这是目前为止最常见的自发断开连接的原因。
2. 客户端发送了一个不支持的协议请求;这可以认为是客户端的配置错误。
broker 应该记录一个关闭原因的异常日志,见 broker logs。
3. 客户端发送一个缺陷的协议请求;这表示是客户端的一个 bug。
broker 应该记录一个关闭原因的异常日志,见 broker logs。
4. broker 在一个无效的状态。
broker 应该记录一个关闭原因的异常日志,见 broker logs。
5. TCP 网关/负载均衡器/防火墙 会话超时。
尝试在客户端开启 TCP keep-alives,通过设置 socket.keepalive.enable 为 true。
6. 由于 TCP 关闭不能发信号给远程对等方关闭的原因,客户端无法知道出了什么问题。
如果断开连接的日志越来越烦人 并且 管理员认为是连接回收器导致的,
客户端可以设置 log.connection.close 为 false 来静默所有自发断开连接的日志。
注意:不管出于什么原因连接关闭,librdkafka 会在 reconnect.backoff.jitter.ms (默认500ms) 之后自动重连。
Ref:https://github.com/edenhill/librdkafka/wiki/FAQ#why-am-i-seeing-receive-failed-disconnected