RocketMQ的客戶端連接數調查


RocketMQ版本:3.4.6

 

==問題現象==

RocketMQ集群的某個topic,在一部分節點上消費有“斷層”,這部分數據一致沒辦法消費。

 

==調查過程==

一頓操作猛如虎的調查之后發現,

該Topic的消費者的客戶端連接數不正確。

程序中設置的客戶端數明明是4個,

但是Web頁面上顯示的是5個。

 

OK,如何才能知道這些客戶端程序到底是哪些呢?

看了一下RocketMQ的命令列表,發現里面有一個命令好像有戲。

 

用這個命令嘗試了一下,果然有效。

命令:sh /home/hadmin/alibaba-rocketmq/bin/mqadmin consumerConnection -n "10.11.2.4:9876;10.11.2.5:9876" -g face2

用這個命令可以查看出,這個消費組的客戶端是在哪個節點上,占用的端口號是哪個。

 

將正常的客戶端連接斷開(用的Storm消費,把Storm的拓撲kill掉就可以了)

再次使用這個命令,就可以查看出,到底是哪個程序在搗鬼了。

 

發現在10.11.2.9節點上,54681這個端口的java程序啟動了一個客戶端連接。

到10.11.2.9上查看一下是哪個程序。

命令:netstat -anp | grep 54681  查看占用端口的java進程號是43021。

命令:ps -ef | grep 43021  查看啟動這個進程的java程序。

 

==問題結論==

我們的場景是用Storm來消費RocketMQ。

但是,在我們kill拓撲的時候,由於storm的原因,

偶爾會有一些worker不能被kill掉,變成“僵屍進程”

上述問題中,莫名其妙多出的1個客戶端連接就是僵屍進程引起的,

將上述發現的僵屍進程kill掉之后,問題就解決了。

  

==經驗教訓==

Storm的拓撲kill之后,建議檢查是否有僵屍進程存在。可以寫一個shell腳本檢查。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM