一早上班,就收到運維同事通知說有一臺物理機宕機,致使虛擬機掛了。只得重啓kafka服務器。shell
啓動zookeeperbootstrap
bin/zkServer.sh start conf/zoo.cfg &
服務器
啓動kafkaapp
bin/kafka-server-start.sh config/server.properties &
運維
kafka啓動以後,發現一直打印warn,上圖。且在進程中ps -ef| grep kafka,沒法看到。很明顯kafka啓動失敗了。函數
Resetting first dirty offset of __consumer_offsets測試
從重複報錯信息中能夠得知,這是清理線程在一直遇到問題。最快的方式當前是清空kafka的data目錄。或者無論這個warn,當大量數據涌入的時候,產生了能夠清理的segment,就不會再有這個warn了。參考 https://blog.csdn.net/define_us/article/details/80537186。.net
正常啓動kafka以後,測試可否使用走一波。線程
建立topic3d
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
生產者生產消息
[apps@erp-computation-4 kafka_2.11-1.1.0]$ bin/kafka-console-producer.sh --broker-list 10.17.156.8:9092 --topic test
my name is xiaoqiang
消費者消費消息
[apps@erp-computation-4 kafka_2.11-1.1.0]$ bin/kafka-console-consumer.sh --bootstrap-server 10.17.156.8:9092 --topic test --from-beginning
my name is xiaoqiang
至此,kafka啓動完成,正常使用。 ctrl+c,關掉Xshell窗口,專心碼代碼。測試應用的時候發現,一堆報錯所有指向連不上kafka。再戰kafka服務器,發現kafka進程已不在。
kafka啓動正常
應用啓動正常
ctrl+c
應用鏈接kafka報錯
kafka進程被幹掉
最終問題發現: 退出kafka時不用ctrl+c, 要用exit函數去退出