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的客户端连接数调查的更多相关文章

  1. "Redis客户端连接数一直降不下来"的有关问题解决

    [线上问题] "Redis客户端连接数一直降不下来"的问题解决 前段时间,上线了新的 Redis缓存(Cache)服务,准备替换掉 Memcached. 为什么要将 Memcach ...

  2. RocketMQ Java 客户端实现

    本章介绍使用 Java 实现RocketMQ 的客户端. 以及各种消息的方式的实现. 本章实现了以下几种消息的实现方式: 一:普通消息 普通的消息分为三种: 1> 可靠的同步消息 可靠的同步传输 ...

  3. "Redis客户端连接数一直降不下来"的有关问题解决 good

    [线上问题] "Redis客户端连接数一直降不下来"的问题解决 前段时间,上线了新的 Redis缓存(Cache)服务,准备替换掉 Memcached. 为什么要将 Memcach ...

  4. RocketMQ Py客户端

    #!/bin/bash yum install make cmake gcc-c++ python-devel zlib-devel cd /home/amy git clone https://gi ...

  5. mysql server查询客户端连接数

    SELECT substring_index(HOST, ) AS host_name, state, count(*) FROM information_schema. PROCESSLIST GR ...

  6. DataSnap Demo:TFDConnection、最大连接数、客户端回叫功能、多线程模拟、压力测试等

    一.限制最大连接数,并验证来访者用户身份: procedure TServerContainer1.DSServer1Connect( DSConnectEventObject: TDSConnect ...

  7. RocketMQ吐血总结

    RocketMQ吐血总结 架构 概念模型 最基本的概念模型与扩展后段概念模型 存储模型 RocketMQ吐血总结 User Guide RocketMQ是一款分布式消息中间件,最初是由阿里巴巴消息中间 ...

  8. 消息队列的一些场景及源码分析,RocketMQ使用相关问题及性能优化

    前文目录链接参考: 消息队列的一些场景及源码分析,RocketMQ使用相关问题及性能优化 https://www.cnblogs.com/yizhiamumu/p/16694126.html 消息队列 ...

  9. 分布式开放消息系统(RocketMQ)的原理与实践

    分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回避不了两个问题: 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一 ...

随机推荐

  1. FireFox 火狐主页被劫持

    火狐主页被劫持hao123,流氓 WIN7 ,firefox,任务栏,快速启动,右键 属性 target 应该是 "D:\Program Files (x86)\Mozilla Firefo ...

  2. as3 运算与检查String 是否能够正确转换成数 值

    如果忘了对一个Number 型变量初始化,那么这个变量参与的任何数学运算的结果都是NaN:如果最终结果赋值给有声明类型的变量,那么为该变量的默认值(仅限uint ,int). var a:Number ...

  3. uiview animation 卡一下

    原因:有个下载图片的地方在主线程执行,导致动画卡一下.

  4. 关于gevent的一些理解(一)

    前言:gevent是python的一个并发框架,以微线程greenlet为核心,使用了epoll事件监听机制以及诸多其他优化而变得高效.而且其中有个monkey类, 将现有基于Python线程直接转化 ...

  5. Python3 impyla 连接 hiveserver2

    简介: 接到一个任务,需要从 hive 中读取数据,生成报表. 于是找到了官方文档:https://cwiki.apache.org/confluence/display/Hive/Setting+U ...

  6. 查看RPM包里的内容

    有时候,拿到一个RPM,并不想安装它,而想了解包里的内容,怎么办呢? 如果只相知道包里的文件列表执行: #rpm -qpl packetname 如果想要导出包里的内容,而不是安装,那么执行: # r ...

  7. ResponseUtil数据传递至前端

    package com.java1234.util; import java.io.OutputStream; import java.io.PrintWriter; import javax.ser ...

  8. Java 使用getClass().getResourceAsStream()方法获取资源

    之前想获取一个资源文件做一些处理,使用getClass().getResourceAsStream()一直拿不到文件. 具体的用法. 1 InputStream is = this.getClass( ...

  9. DataFrame 取值

    通过 DataFrame[ ]方式,取得得都是行, [ ] 中,添加过滤条件 data = pd.DataFrame( np.arange(16).reshape(4,4), index=['OP', ...

  10. twitter 等网站console.log不能使用,可用alert或者

    function setConsole() { var iframe = document.createElement('iframe'); iframe.style.display = 'none' ...