应用的signal 11问题引起MQ宕机或者挂起的规避方法

Technote (troubleshooting)


问题(摘要)

用户的MQ应用报出signal 11(SIGSEGV)错误。由于在缺省情况下,应用与MQ的绑定模式为SHARED。这意味着MQ应用与MQ系统代理进程(amqzlaa0)共享内存,则MQ代理进程访问的共享内存很有可能受到破坏。根据内存破坏位置的不同,会引起不同的MQ系统故障,比如挂起或者宕机问题。

症状

MQ的代理进程可能报出下面的FDC 文件:

| Component :- xehExceptionHandler
| Probe Id :- XC130004
| Probe Type :- HALT6109
| Probe Description :- AMQ6109: An internal WebSphere MQ error has
occurred.
| Comment1 :- SIGSEGV: invalid address permissions(a1b301)

MQ的应用进程也可能报出下面的FDC 文件, 或者应用日志报出应用得到signal 11 错误。

| Component :- xehExceptionHandler
| Probe Id :- XC130003
| Probe Type :- HALT6109
| Probe Description :- AMQ6109: An internal WebSphere MQ error has
occurred.
| Comment1 :- SIGSEGV: invalid address permissions(a8b201)


诊断问题

signal 11问题通常比较复杂。如果是当前运行的应用引起的内存破坏,则完整的core dump可以帮助定位问题,但是,如果是内存被损坏一段时间才报出signal 11错误,则当前运行的应用是牺牲者(victim)。这种情况下core dump或者CICS dump信息作用不大,只能起到一定辅助作用,很难排查问题。


解决问题

我们建议用户力争排除signal 11问题,但鉴于signal 11问题比较难排查,或者在排查以前,为了保证MQ系统的稳定性,我们建议使用应用的隔离绑定模式,即isolated binding。这样应用和队列管理器就运行在不同的进程,从而不再有资源共享。这是最安全的模式,但会有性能方面的影响,所以用户在选择使用的时候需要根据应用的健壮性,在MQ系统的安全和性能之间做出选择。如果应用曾经报出signal 11,推荐使用安全的模式。具体方法是在qm.ini文件中增加:

Connection:
DefaultBindType=ISOLATED
但是,在MQ V7版本中,MQ代理进程(amqzlaa0)在特定的场景下会出现内存泄露,此问题在MQ V7.0.1.9中得以修正。因此,如果使用隔离绑定模式,建议至少升级到MQ 7.0.1.9。

对该页面打分:

(0 用户)平均评分

添加意见

文档信息


More support for:

WebSphere MQ

软件版本:

7.0.2, 7.1, 7.5

操作系统:

UNIX

用途版本:

All Editions

参考号:

1653050

修改日期:

2013-12-11

Translate my page

Machine Translation

网站内容导航