MQ中间件死信队列深度不断增加问题解决案例
感谢作者:
http://www.wo81.com/tec/mid/mq/2014-04-14/94.html
转载声明:本站文章若无特别说明,皆为原创,转载请注明来源,谢谢 !
背景:工行某分行发现小额MQ死信队列深度已超过1W,而且还一直在增加,但报文发送、接收均正常。
问题排查过程
1、检查应用日志、mq发送日志,均未发现异常。
2、查看mq死信队列信息
bash-3.2$ ./amqsbcg DEADQ QMMBFE
AMQSBCG0 - starts here
**********************
MQOPEN - 'DEADQ'
MQGET of message number 1
****Message descriptor****
StrucId : 'MD ' Version : 2
Report : 0 MsgType : 8
Expiry : -1 Feedback : 0
Encoding : 273 CodedCharSetId : 819
Format : 'MQDEAD '
Priority : 0 Persistence : 0
MsgId : X'414D5120514D4D424645202020202020505376A520000802'
CorrelId : X'000000000000000000000000000000000000000000000000'
BackoutCount : 0
ReplyToQ : ' '
ReplyToQMgr : 'QMMBFE '
** Identity Context
UserIdentifier : ' '
AccountingToken :
X'0000000000000000000000000000000000000000000000000000000000000000'
ApplIdentityData : ' '
** Origin Context
PutApplType : '7'
PutApplName : 'QMMBFE '
PutDate : '20120914' PutTime : '18260760'
ApplOriginData : ' '
GroupId : X'000000000000000000000000000000000000000000000000'
MsgSeqNumber : '1'
Offset : '0'
MsgFlags : '0'
OriginalLength : '-1'
**** Message ****
length - 856 bytes
00000000: 444C 4820 0000 0001 0000 0109 5359 5354 'DLH ........SYST'
00000010: 454D 2E43 4943 532E 494E 4954 4941 5449 'EM.CICS.INITIATI'
00000020: 4F4E 2E51 5545 5545 2020 2020 2020 2020 'ON.QUEUE '
00000030: 2020 2020 2020 2020 2020 2020 514D 4D42 ' QMMB'
00000040: 4645 2020 2020 2020 2020 2020 2020 2020 'FE '
00000050: 2020 2020 2020 2020 2020 2020 2020 2020 ' '
00000060: 2020 2020 2020 2020 2020 2020 0000 0111 ' ....'
00000070: 0000 0333 4D51 5452 4947 2020 0000 0006 '...3MQTRIG ....'
00000080: 5255 4E4D 5154 524D 0000 0000 0000 0000 'RUNMQTRM........'
00000090: 0000 0000 0000 0000 0000 0000 3230 3132 '............2012'
000000A0: 3039 3134 3138 3236 3037 3633 544D 2020 '091418260763TM '
000000B0: 0000 0001 3130 3238 3831 3030 3030 3139 '....102881000019'
000000C0: 5F32 2020 2020 2020 2020 2020 2020 2020 '_2 '
000000D0: 2020 2020 2020 2020 2020 2020 2020 2020 ' '
000000E0: 2020 2020 554E 4958 2E50 524F 3220 2020 ' UNIX.PRO2 '
000000F0: 2020 2020 2020 2020 2020 2020 2020 2020 ' '
00000100: 2020 2020 2020 2020 2020 2020 2020 2020 ' '
00000110: 2020 2020 2020 2020 2020 2020 2020 2020 ' '
00000120: 2020 2020 2020 2020 2020 2020 2020 2020 ' '
00000130: 2020 2020 2020 2020 2020 2020 2020 2020 ' '
00000140: 2020 2020 2020 2020 2020 2020 2020 2020 ' '
00000150: 2020 2020 0000 0006 2F62 6570 736D 6266 ' ..../bepsmbf'
00000160: 652F 6269 6E2F 6C69 622F 4D51 6372 6563 'e/bin/lib/MQcrec'
00000170: 7620 2020 2020 2020 2020 2020 2020 2020 'v '
3、检查MQDLQ结构如下
4、查到其ReasonCode为 0000 0109
5、X'00000109' 含义为:MQFB_APPL_CANNOT_BE_STARTED
Application cannot be started.
An application processing a trigger message was unable to start the
application named in theApplIdfield of the trigger message.
6、也就是说如下程序无法启动
/bepsmbfe/bin/lib/MQcrecv
/bepsmbfe/bin/lib/MQrrecv
7、启动不了的可能原因:文件不存在、没有执行权限等。
了解到其真实原因为路径错误(正确路径为/home/bepsmbfe/bin/lib/),将其路径改正确即可解决问题。
8、解决问题的步骤
1) 停止相关应用
2) 重新定义process
#su - mqm
$runmqsc QMMBFE
DEF PROCESS(unix.pro1) APPLTYPE(UNIX) APPLICID('/home/bepsmbfe/bin/lib/MQrrecv') REPLACE
DEF PROCESS(unix.pro2) APPLTYPE(UNIX) APPLICID('/home/bepsmbfe/bin/lib/MQcrecv') REPLACE
第3步:启动相关应用
第4步:继续观察死信队列的状况,发现不再增加,问题解决。
MQ中间件死信队列深度不断增加问题解决案例的更多相关文章
- 【MQ中间件】RabbitMQ -- RabbitMQ死信队列及内存监控(4)
1.RabbitMQ TTL及死信队列 1.1.TTL概述 过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取:过了之后消息将自动被删除.RabbitMQ可以对消息和队列设 ...
- 消息队列 ---常用的 MQ 中间件
目前市面上比较常用的 MQ(Message Queue,消息队列)中间件有 RabbitMQ.Kafka.RocketMQ,如果是轻量级的消息队列可以使用 Redis 提供的消息队列,其中 Redis ...
- RabbitMQ延迟消息:死信队列 | 延迟插件 | 二合一用法+踩坑手记+最佳使用心得
前言 前段时间写过一篇: # RabbitMQ:消息丢失 | 消息重复 | 消息积压的原因+解决方案+网上学不到的使用心得 很多人加了我好友,说很喜欢这篇文章,也问了我一些问题. 因为最近工作比较忙, ...
- Rabbitmq消费失败死信队列
Rabbitmq 重消费处理 一 处理流程图: 业务交换机:正常接收发送者,发送过来的消息,交换机类型topic AE交换机: 当业务交换机无法根据指定的routingkey去路由到队列的时候,会全部 ...
- rabbitmq~消息失败后重试达到 TTL放到死信队列(事务型消息补偿机制)
这是一个基于消息的分布式事务的一部分,主要通过消息来实现,生产者把消息发到队列后,由消费方去执行剩下的逻辑,而当消费方处理失败后,我们需要进行重试,即为了最现数据的最终一致性,在rabbitmq里,它 ...
- RabbitMQ实战-死信队列
RabbitMQ死信队列 场景说明 代码实现 简单的Util 生产者 消费者 场景说明 场景: 当队列的消息未正常被消费时,如何解决? 消息被拒绝并且不再重新投递 消息超过有效期 队列超载 方案: 未 ...
- RocketMQ之八:重试队列,死信队列,消息轨迹
问题思考 死信队列的应用场景? 死信队列中的数据是如何产生的? 如何查看死信队列中的数据? 死信队列的读写权限? 死信队列如何消费? 重试队列和死信队列的配置 消息轨迹 1.应用场景 一般应用在当正常 ...
- rabbitmq死信队列消息监听
#邮件通知并发送队列消息#!/bin/bash maillog="/var/log/mq.maillog" message_file="/tmp/mq_message&q ...
- rabbitmq系列(四)死信队列
一.什么是死信队列 当消息在一个队列中变成一个死信之后,它将被重新publish到另一个交换机上,这个交换机我们就叫做死信交换机,私信交换机将死信投递到一个队列上就是死信队列.具体原理如下图: 消息变 ...
随机推荐
- CentOS7最小化安装-Linux-1
CentOS 7的安装其实很简单,主要是网络配置. 选英文.设置时区等 最小化安装 先启动一个网络 Begin 吧 在安装的时候设置好root密码.很简单 别去点安装tools. 等待安装完成后,点击 ...
- github构建个人网站模板
http://novoland.github.io/%E5%B9%B6%E5%8F%91/2014/09/11/ThreadLocal%20%E5%88%86%E6%9E%90.html
- 【转】R语言 RStudio快捷键
链接地址 http://blog.sina.com.cn/s/blog_403aa80a0101ar8q.html 控制台 功能 Windows & Linux Mac 移动鼠标到控制台 C ...
- Ubuntu 下安装 Swoole
环境:Ubuntu16.04 apt-get update apa-get install apache2 php php-pear php-dev mysql-server gcc apache2 ...
- PHP轻量级框架 Slim 使用(一)
安装参照文档:https://wizardforcel.gitbooks.io/slim3-doc/content/1.html 项目目录 其中主要业务操作在app目录中完成,可根据需求划分 我这里分 ...
- APP-8.2-Postman应用
用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具.今天给大家介绍的这款网页调试工具不仅可以 ...
- Jupyter-1-安装Anaconda3及更改路径
Jupyter Notebook测试Python3,可以将图文.代码有效融合,进行交互式编程,适合学习讲解及方案沟通. 1.下载Anaconda3 可以到官网或是清华大学软件镜像站去下载. 路径:ht ...
- hadoop-3
结合https://blog.csdn.net/zhangjun5965/article/details/76796998,自己过一遍感受下 public class DFSZKFailoverCon ...
- [转载]Core Elements of a Program
原文链接 http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-c ...
- DATASNAP远程方法返回TSTREAM正解(转咏南兄)
DATASNAP远程方法返回TSTREAM正解 DATASNAP远程方法返回TSTREAM,如果数据大小超过32K是会报错的.许多DELPHIER栽在这个上头,甚至开始怀疑TSTREAM返回数据的可行 ...