IBM Support

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

Troubleshooting


Problem

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

Symptom

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)

Diagnosing The Problem

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

Resolving The Problem

我们建议用户力争排除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。

[{"Product":{"code":"SSFKSJ","label":"WebSphere MQ"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"Not Applicable","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.5;7.1;7.0.2","Edition":"All Editions","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
15 June 2018

UID

swg21653050