请高手赐教,MQ队列管理器异常挂起!

sjz64472418 2012-10-23 08:26:02
问题描述:客户端大并发连接MQ队列管理器,往队列中放置消息的过程中,导致MQ队列管理器挂掉了。
客户端异常:
Caused by: com.ibm.mq.MQException MQJE001: Completion Code '2', Reason '2059'.
Caused by: com.ibm.mq.jmqi.JmqiException CC=2;RC=2059;AMQ9524: Remote queue manager unavailable

MQ服务端:
队列管理器Qm1异常关闭了

服务端错误日志定位:
/var/mqm/qmgrs/Qm1/errors/AMQERR01.LOG
--------------------------------------
10/23/2012 06:15:47 PM - Process(4089.634) User(mqm) Program(runmqlsr)
AMQ9508: Program cannot connect to the queue manager.

EXPLANATION:
The connection attempt to queue manager 'Qm1' failed with reason code 2059.
ACTION:
Ensure that the queue manager is available and operational.
----- amqrmsaa.c : 535 --------------------------------------------------------
10/23/2012 06:15:47 PM - Process(4089.634) User(mqm) Program(runmqlsr)
AMQ9999: Channel program ended abnormally.
--------------------------------------

/var/mqm/errors/AMQ6273.0.FDC
----------------------------------------------------------------------------
| Probe Description :- AMQ6119: An internal WebSphere MQ error has occurred |
| ('28 - No space left on device' from semget.) |
| FDCSequenceNumber :- 0 |
| Arith1 :- 28 1c |
| Comment1 :- '28 - No space left on device' from semget.
----------------------------------------------------------------------------

/var/mqm/errors/AMQERR01.LOG
--------------------------------------
10/23/2012 05:36:56 PM - Process(4029.1) User(mqm) Program(amqzxma0)
AMQ6119: An internal WebSphere MQ error has occurred ('28 - No space left on
device' from semget.)

EXPLANATION:
MQ detected an unexpected error when calling the operating system. The MQ error
recording routine has been called.
ACTION:
Use the standard facilities supplied with your system to record the problem
identifier and to save any generated output files. Use either the WMQ Support
site: http://www.ibm.com/software/integration/wmq/support/, or IBM Support
Assistant (ISA): http://www.ibm.com/software/support/isa/, to see whether a
solution is already available. If you are unable to find a match, contact your
IBM support center. Do not discard these files until the problem has been
resolved.
--------------------------------------

问题分析:
从客户端日志看出是由于队列管理器无法连接导致,查看队列管理器挂掉了。检查MQ错误日志看出由于服务器通道异常关闭导致,查看跟客户端代码有关的错误日志,发现没有足够的资源。

MQ通道设置:(应该不存在通道数太少导致通道不够用的情况)
CHANNELs:
MaxChannels=500
MaxActiveChannels=500

猜想:
MQ安装和配置没什么问题,因为在小并发发送时,是没有问题的。
怀疑是客户端代码存在问题,具体是哪儿有问题不太清楚。因为是公司代码,不方便贴出来。

疑问:
1.MQPoolToken token = MQEnvironment.addConnectionPoolToken();这个的具体含义和影响?
2.多线程可否对同一个队列管理器进行同时操作,往相同的队列中放置不同的消息,即是否需要做同步处理?
3.队列管理器commit的用处,是否可以不提交直接断开连接和关闭?
...全文
2642 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjz64472418 2012-11-20
  • 打赏
  • 举报
回复
目前这个问题这么处理了,针对资源不足的情况,在MQ7.0.0上打了补丁,再次压力测试倒是没有发现挂起的现象。 补丁下载地址:http://www-01.ibm.com/support/docview.wss?uid=swg24030108 至于多线程访问MQ队列管理器,还在继续研究。 目前使用阻塞获取消息的方式处理着,总感觉太慢,想从两个方向解决这个问题: 一、使用MQ集群方式 二、获取消息使用多线程并发获取,多线程访问队列管理器先从mq取消息放入阻塞队列中,然后后面的逻辑再通过消费线程去阻塞队列中获取处理。不知道有没有人,有好的方案和可以借鉴的代码贴出来参考参考!
tomorrow_hello 2012-11-12
  • 打赏
  • 举报
回复 1
LZ 记得给分哈...
tomorrow_hello 2012-11-12
  • 打赏
  • 举报
回复
Java 中的多线程程序 Java™ 运行时环境是继承性多线程的。WebSphere® MQ classes for Java 允许在多个线程之间共享队列管理器对象,但确保对目标队列管理器的所有访问都是同步的。 Java 中很难避免多线程程序。请考虑一个连接到队列管理器的简单程序,并在启动时打开队列。该程序在屏幕上显示单个按钮。当用户单击该按钮时,程序从队列中取出一条消息。 Java 运行时环境是继承性多线程的。因此,应用程序的初始化将在一个线程中进行,作为响应按钮按下而执行的代码在另一个线程中进行(用户接口线程)。 WebSphere MQ classes for Java 放松了此约束,允许队列管理器对象及其关联的队列、主题和进程对象能够在多线程之间共享。 对于给定的连接(MQQueueManager 对象实例)而言,WebSphere MQ classes for Java 的实现确保了所有对目标 WebSphere MQ 队列管理器的访问都是同步的。阻止了要发出对队列管理器的调用的线程,直到该连接进程中的所有其他调用都完成。如 果要从程序内的多个线程同时访问同一个队列管理器,应为需要同时访问的每个线程都创建一个新的 MQQueueManager 对象。(这等同于为每个线程发出一个单独的 MQCONN 调用。)
tomorrow_hello 2012-11-12
  • 打赏
  • 举报
回复
楼主解决没? 我最近也碰到类似问题了...看了帮助文档后,队列管理器对象是支持多线程访问的,但是是同步的 。估计要每个线程都要创建属于自己的队列管理器
QQ99902 2012-10-29
  • 打赏
  • 举报
回复
学习一下。参观参观。
jxsrzrj 2012-10-28
  • 打赏
  • 举报
回复
谢谢上传啊!
内容概要:本文研究了基于Q-Learning自适应强化学习的PID控制器在自主水下航行器(AUV)运动控制中的应用,旨在提升其在复杂海洋环境下的控制性能。通过建立AUV的动力学模型,将Q-Learning算法与传统PID控制相结合,实现控制器参数的在线自适应优化,有效增强了系统的响应速度、稳定性和抗干扰能力。研究采用Matlab进行仿真验证,结果表明该方法在轨迹跟踪与姿态控制方面具有优越表现,为水下机器人智能控制提供了可行的技术路径与理论支持。; 适合人群:具备自动控制理论、强化学习或水下机器人建模背景,从事相关科研工作的研究人员、高校研究生及工程技术开发者。; 使用场景及目标:①应用于高精度、强鲁棒性的水下机器人运动控制系统设计;②开展智能PID控制器在非线性、时变系统中的参数自整定研究;③作为强化学习在复杂工业控制场景中落地的典型案例参考,推动算法与工程实践融合。; 阅读建议:建议结合提供的Matlab代码进行仿真实验,重点剖析Q-Learning与PID融合的架构设计、奖励函数设定及参数收敛过程,可进一步拓展至与其他智能优化算法(如DQN、Actor-Critic)的对比研究,深化对自适应控制机制的理解。
已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 Matlab 被视为一种功能卓越的编程平台,特别是在数值运算和数据分析方面展现出广泛的应用价值。在应对多元非线性回归的挑战时,Matlab 拥备多种工具和函数,支持用户对复杂的数据进行构建模型和适配。本指南将重点阐释在 Matlab 环境下如何执行多元非线性回归分析。 我们需要掌握三种关键的回归指令: 1. `polyfit(x,y,n)`:此函数适用于拟合一元幂函数,能够导出一个多项式模型。例如,若知晓数据呈现二次函数形态,可选择`n=2`来适配一个二次曲线。 2. `regress(y,x)`:这是一个多元线性回归指令,能够处理多个自变量对因变量的影响。即便数据并非完全呈现线性特征,该函数也能提供一个线性近似。 3. `nlinfit(x,y,’fun’,beta0)`:这是最为通用的非线性回归指令,适用于适配任何类型的函数,无论是一元或多元,前提是用户能够定义函数形式(`fun`参数)。 回归分析的核心在于寻找一组最优的系数,使得模型能够最恰当地描述数据。这通常涉及选择一个合适的函数形态,随后通过最小化误差平方和来估算系数。在Matlab中,`regress`指令主要用于处理线性模型,而`nlinfit`则处理更为复杂的非线性模型。 对于多元线性回归模型,我们可以用如下形式进行表述: \[ y = \beta_0 + \beta_1x_1 + \beta_2x_2 + \cdots + \beta_px_p + \epsilon \] 其中,\( y \)是因变量,\( x_1, x_2, \ldots, x_p \)是自变量,\( \beta_0, \beta_1, ...
内容概要:本文系统阐述了基于BP神经网络的语音特征信号分类方法,并提供了完整的Matlab代码实现。研究围绕语音信号的数据预处理、特征提取、神经网络结构设计、模型训练与分类测试等核心环节展开,详细展示了BP神经网络在语音识别任务中的应用流程。通过构建多层前馈网络模型,利用误差反向传播算法优化权重,实现了对不同语音类别特征的高效分类,具有较强的工程实践价值和技术可复现性。; 适合人群:具备信号处理与机器学习基础知识,熟悉Matlab编程语言,从事语音识别、模式识别、人工智能等相关领域研究的学生及科研人员;特别适用于开展课程设计、毕业设计或科研项目的初级与中级研究人员。; 使用场景及目标:①深入理解BP神经网络的基本原理及其在语音信号分类中的具体实现过程;②掌握Matlab环境下语音信号特征提取与分类模型构建的全流程技术;③为语音识别、人机交互、智能听觉系统等实际应用场景提供可靠的算法基础与代码参考。; 阅读建议:建议读者结合所提供的Matlab代码逐行分析其实现逻辑,重点关注数据输入格式、网络参数初始化、训练迭代过程及分类性能评估;可通过调整隐含层节点数、学习率、激活函数等超参数,观察模型收敛性与分类准确率的变化,从而深化对神经网络调参策略的理解。

2,633

社区成员

发帖
与我相关
我的任务
社区描述
WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。
社区管理员
  • WebSphere社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧