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脚本检查。
RocketMQ的客户端连接数调查的更多相关文章
- "Redis客户端连接数一直降不下来"的有关问题解决
[线上问题] "Redis客户端连接数一直降不下来"的问题解决 前段时间,上线了新的 Redis缓存(Cache)服务,准备替换掉 Memcached. 为什么要将 Memcach ...
- RocketMQ Java 客户端实现
本章介绍使用 Java 实现RocketMQ 的客户端. 以及各种消息的方式的实现. 本章实现了以下几种消息的实现方式: 一:普通消息 普通的消息分为三种: 1> 可靠的同步消息 可靠的同步传输 ...
- "Redis客户端连接数一直降不下来"的有关问题解决 good
[线上问题] "Redis客户端连接数一直降不下来"的问题解决 前段时间,上线了新的 Redis缓存(Cache)服务,准备替换掉 Memcached. 为什么要将 Memcach ...
- RocketMQ Py客户端
#!/bin/bash yum install make cmake gcc-c++ python-devel zlib-devel cd /home/amy git clone https://gi ...
- mysql server查询客户端连接数
SELECT substring_index(HOST, ) AS host_name, state, count(*) FROM information_schema. PROCESSLIST GR ...
- DataSnap Demo:TFDConnection、最大连接数、客户端回叫功能、多线程模拟、压力测试等
一.限制最大连接数,并验证来访者用户身份: procedure TServerContainer1.DSServer1Connect( DSConnectEventObject: TDSConnect ...
- RocketMQ吐血总结
RocketMQ吐血总结 架构 概念模型 最基本的概念模型与扩展后段概念模型 存储模型 RocketMQ吐血总结 User Guide RocketMQ是一款分布式消息中间件,最初是由阿里巴巴消息中间 ...
- 消息队列的一些场景及源码分析,RocketMQ使用相关问题及性能优化
前文目录链接参考: 消息队列的一些场景及源码分析,RocketMQ使用相关问题及性能优化 https://www.cnblogs.com/yizhiamumu/p/16694126.html 消息队列 ...
- 分布式开放消息系统(RocketMQ)的原理与实践
分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回避不了两个问题: 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一 ...
随机推荐
- 使用 Java DB (Derby) 数据库
使用 Java DB (Derby) 数据库 https://netbeans.org/kb/docs/ide/java-db_zh_CN.html 本文档说明了如何在 NetBeans IDE 中设 ...
- 字符串(string) 的基本操作
name = "my \tname is alex" #\t 空格 1. name.capitalize() #首字母大写 2.name.count('a') # 对字母a计数 ...
- could not resolve property
could not resolve property(无法解析属性) 顾名思义在写hql语句的时候,属性写错了! 请检查大小写,是实体类的,不是数据库表的! 一个一个检查,仔细看!
- DBA 招聘
数据库管理员(资深) 眼控科技 10-19万 72小时反馈 上海 6小时前 大专及以上 2年以上经验 普通话 25-35岁 绩效奖金 带薪年假 午餐补助 定期体检 年底双薪 五险一金 职位描述: 工作 ...
- 大型运输行业实战_day03_2_使用ajax将请求页面与请求数据分离
1.引入jquery 1.添加jquery包 2.在要使用jquery的页面中引入jquery 引入jquery后必须检查是否引入正确,这里值得注意的是 springMVC默认情况先会拦截 js文件, ...
- Web服务技术协议:REST与SOAP
Web服务技术就有SOAP(Simple Object Access Protocol,简单对象访问协议)和REST(Representational State Transfer,表示性状态转移) ...
- 鼠标经过的图片高亮显示,其余变暗效果[xyytit]
初始代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...
- 【校招面试 之 剑指offer】第11题 旋转数组中的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如: 数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转, ...
- 300最长上升子序列 · Longest Increasing Subsequence
[抄题]: 往上走台阶 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低到高排列的子序列,这种子序列不一定是连续的或者唯一的. 样例 给出 [5,4,1,2,3],LIS 是 [1,2 ...
- handler通信机制
package com.example.gp08_day26_handler3; import android.os.Bundle; import android.os.Handler; import ...