亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
1389
2022-05-28
我們使用kafka時,有時候會遇到發送數據失敗的情況,其原因及解決方案如下:
1.?????Kafka topic leader為-1
Kafka客戶端執行如下命令查看topic的leader信息:
kafka-topics.sh --describe --zookeeper zk業務IP:24002/kafka
如果leader為-1,需查看Replicas中的副本節點是否正常,查看命令如下:
kafka-broker-info.sh --zookeeper zk業務IP:24002/kafka
命令中可以查詢到brokerid,說明節點kafka服務正常
如果leader為-1的分區對應的Replicas中節點都不正常,需要先恢復異常節點kafka服務。如果都正常但ISR列表中無節點信息,或者ISR列表中的節點不正常,需要查看Kafka服務端的unclean.leader.election.enable參數是否為true或者topic端是否配置此參數為true。如果都不為true,需要對此topic修改配置為true。
Kafka服務端的unclean.leader.election.enable參數配置查看方式如下:
Kafka topic端unclean.leader.election.enable參數配置查看方式如下:
kafka-topics.sh --describe --zookeeper zk業務IP:24002/kafka --topic topicName
如果Config中無unclean.leader.election.enable信息,則與服務端配置一致。
如果有,則此配置優先級高于服務端配置。
修改topic端此配置的方式如下:
kafka-topics.sh --alter --topic topicName --zookeeper zk業務IP:24002/kafka --config unclean.leader.election.enable=true
2.?????DNS配置導致
執行 vi /etc/resolv.conf,如果有“nameserver X.X.X.X”,把此內容注釋掉
3.?????網絡異常
生產端節點ping服務端IP,ping -s 15000 IP,如果延遲高于5ms,說明網絡延遲過高,也可通過長ping來判斷是否有網絡丟包。
4.?????CPU或者IO過高也可能導致連接失敗
iostat -d -x 1查看CPU參數idle和IO參數util,idle值越高,CPU越空閑,util值越高,IO使用率越高。如果idle值小于20%,top -Hp kafkaPid查看CPU使用率高的線程,打jstack日志分析具體的原因;如果util值大于80%,查看磁盤對應的讀寫速率、await和svctm的大小判斷對IO影響大的原因,如果讀寫速率比較大,排查kafka讀寫請求和延時,如果awati遠大于svctm,IO隊列太長,應用響應時間很慢。
5.?????磁盤壞道或者其他原因也可能導致連接失敗
如果server.log日志中有大量“java.io.IOException: Connection to IP:21007 (id: 2 rack: null) failed”日志,查看IP節點操作系統日志中是否有“Sense Key : Medium Error”信息,如果有,說明出現磁盤壞道,需修復或更換磁盤。另外,還需要打此節點的jstack信息,排查是否有阻塞或者死鎖。如果是C80版本,且jstack信息中有如下信息,需打死鎖補丁:
6.???? 如果報“TimeoutException”或偶爾發送失敗,可先調大request.timeout.ms,并查看服務端num.io.threads和num.network.threads是否可以優化(這兩個參數一般調整為節點磁盤個數的倍數)。根據發送的數據量的大小也可適當調整batch.size、buffer.memory、linger.ms的大小。如果發送的數據量很大且可容忍一定時延,也可以考慮開啟壓縮,compression.type指定壓縮方式,可配置為“gzip”、“snappy”或“lz4”。
7.?????ssh卡住
ssh -v -p 端口號 異常節點ip
如果如上圖所示卡住,解決方式是將GSSAPIAuthentication修改為no
8.???? 如果是集群外客戶端生產發送失敗,還可以通過集群內客戶端測試下生產是否成功,進一步減小排查方向。
Kafka
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。