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