• 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脚本检查。

  • 相关阅读:
    URAL——DFS找规律——Nudnik Photographer
    URAL1353——DP——Milliard Vasya's Function
    URAL1203——DPor贪心——Scientific Conference
    递推DP HDOJ 5389 Zero Escape
    区间DP UVA 1351 String Compression
    树形DP UVA 1292 Strategic game
    Manacher HDOJ 5371 Hotaru's problem
    同余模定理 HDOJ 5373 The shortest problem
    递推DP HDOJ 5375 Gray code
    最大子序列和 HDOJ 1003 Max Sum
  • 原文地址:https://www.cnblogs.com/quchunhui/p/9486298.html
Copyright © 2020-2023  润新知