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脚本检查。
最新文章
- SNF开发平台WinForm之一-开发-单表表格编辑管理页面-SNF快速开发平台3.3-Spring.Net.Framework
- POJ 2778 DNA Sequence(AC自动机+矩阵加速)
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
- 关于float的说明
- PHP文件上传错误类型及说明
- Servlet生命周期以及获取参数
- POJ 1287	 Networking (最小生成树)
- DevExpress控件XtraGrid的Master-Detail中DetailViewCaption显示问题
- centos6.5图形界面NetworkManager 配置ip文件位置
- 浅谈position: absolute和position:relative
- Thinkjs学习2—数据库的配置
- 盘点 Python 中的那些冷知识(二)
- 嵌入 Office ,doc|docx|xls|xlsx|ppt|pptx|pdf|等
- DevExpress ChartControl ViewType.Line
- WCF系列教程之消息交换模式之请求与答复模式(Request/Reply)
- sql 置顶功能的查询
- 2018.8.23几日重新编译OSG+OE+Qt遇到的问题
- Linux CPU实时监控mpstat命令详解
- 阿里云服务器IIS启用HTTPS协议(转)
- makefile中ifeq与ifneq dev/null和dev/zero简介 dd命令