LoadRunner MQ报错Reason Code 2009:性能中心运行异常求助
解决Performance Centre中MQ测试报错MQJE001 (Reason 2009)的问题
我之前帮不少用户踩过这个坑,这个2009错误本质就是MQ客户端和队列管理器的连接被意外中断了。你说脚本和配置完全一致,但本地Vugen能跑通、Performance Centre不行,核心肯定是两个环境的差异导致的,下面是几个最值得优先排查的方向:
1. 先查网络和防火墙限制
本地机器能连MQ服务器不代表Performance Centre的负载生成器(Load Generator)也能连。很多时候负载生成器和MQ服务器不在同一个网段,或者防火墙直接拦了MQ的通信端口(默认是1414,也可能是你们自定义的端口)。
- 直接在负载生成器机器上用
telnet <MQ服务器IP> <端口号>测试连通性,连不通的话先找运维开防火墙规则 - 确认防火墙是否允许双向通信——MQ连接需要客户端和服务器互相传数据,单向放行也会出问题
2. 检查MQ队列管理器的通道配置
别光看自己的脚本配置,MQ端的通道设置才是关键。尤其是下面几点:
- 去MQ队列管理器的错误日志里找细节(Linux一般在
/var/mqm/errors,Windows看事件日志的应用程序日志),2009只是表面错误,日志里会告诉你真正的关闭原因——比如身份验证失败、通道并发连接数超限、IP被拉黑了 - 检查通道的
MCAUSER配置,是否允许Performance Centre运行脚本的用户访问队列管理器 - 看看通道的
MAXINST(最大并发连接数)设置,如果Performance Centre启动了大量虚拟用户,很可能超过了这个限制导致新连接被拒绝
3. 核对负载生成器的MQ客户端环境
脚本一致不代表运行环境一致,负载生成器上的MQ客户端可能和本地Vugen有差异:
- 对比本地和负载生成器的MQ客户端版本,确保两者兼容(比如都是IBM MQ 9.x,别一个是8.x一个是9.x)
- 检查负载生成器上的
mqclient.ini配置文件,有没有特殊的SSL、代理设置和本地不一样——有时候运维会在服务器端加这些配置你不知道 - 再确认一遍负载生成器上的MQ连接参数:队列管理器名称、主机名、端口是不是和本地完全一致,别手滑输错了
4. 调整连接超时参数
Performance Centre的负载生成器可能网络延迟比本地高,导致连接超时被队列管理器主动断开:
- 在脚本里手动设置MQ连接的超时时间,比如把
MQEnvironment.connectTimeout设为30000(30秒),给连接足够的建立时间 - 检查MQ队列管理器通道的
SHORTRTY和LONGRTY参数,确保允许足够的重试次数,避免一次连接失败就直接断开
附你遇到的错误信息:
System.err: MQJE001: An MQException occurred: Completion Code 2, Reason 2009
MQJE016: MQ queue manager closed channel immediately during connect
Closure reason = 2009
内容的提问来源于stack exchange,提问作者Nikhil
相关产品推荐
相关产品推荐

