免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 14203 | 回复: 7

中间件MQ for AIX 、SCO UNIXWARE安装配置 [复制链接]

论坛徽章:
0
发表于 2006-03-28 22:04 |显示全部楼层
MQSeries 安装配置操作维护手册
























徐永广






内容摘要

本文详细介绍了MQSeries在**代收付项目(以下简称TQPS)中的安装配置、及操作维护,包括缴费中心端的和商业银行前台端的。


适合对象

        缴费中心和商行前台的中间件系统管理员、也适合应用操作人员在配置时的参考。

参考文档

        《MQSeries System Administration》、《MQSeries Queue Manager Cluster》、《MQSeries intercommunication》、MQSeries安装介质的帮助文档。

编者

        徐永广




修改记录

修改次数        修改内容        修改时间        版本
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       




第一章 缴费中心中间件MQ的安装与配置        4
环境检查        4
安装介质要求与准备        4
安装(配置)在A节点上        4
安装(配置)在B节点上        6
MQ在HACMP上的应用配置        6
第二章 商行前置机中间件MQ的安装与配置        10
环境检查        10
安装介质要求与准备        11
商行前置机测试环境的配置脚本        13
第三章 中间件MQSeries的维护与操作        14
MQ的日志清理        14
MQ的故障维护        15
连接故障维护        16
常用MQ系统操作命令        18
常用MQSC脚本命令        18



























第一章 缴费中心中间件MQ的安装与配置
说明:在缴费中心的MQ版本是MQSeries 5.2 for AIX5L,采用双机热备份方式,也就是在A机和B机的本地盘安装应用软件,在共享盘上存储数据。也就是在共享盘上创建文件系统/var/mqm。在每台机器上需创建mqm用户和mqm组,并保证它们的用户ID和组ID相同。因本系统双机备份设计采用standby方式,即在正常工作方式下,只有一台机器(A机)运行应用程序,当A机意外宕机时,刚B机接管过来,启动中间件及应用程序,继续运行。
环境检查
                硬件检查

MQSeries AIX版,V5.2可以运行在能运行AIX 5L的机器上,并且该机器必须有足够的存储以满足要求。基本代码和帮助文件大约需要100M的存储空间。存储数据的/var/mqm文件系统需要1.5G的存储空间。查看存储空间用命令“# df -k”。

软件检查

目前的AIX测试版本是5L,在其上可以运行MQSeries 5.2或MQSeries5.3。
安装介质要求与准备
若用光盘安装必须提供《IBM MQSeries 5.2 for AIX 5L》光盘介质及补丁包,MQSeries最新补丁网址:
http://www-3.ibm.com/software/ts/mqseries/support/summary/aixhtml
安装(配置)在A节点上
                创建文件系统

                        # varyonvg appvg(说明:假定共享盘上为MQSeries分配的卷组名为appvg。)

                  # smitty crjfs
                                Add a Standard Journaled File System
                                        Volumn group name    appvg
                                        SIZE of file system (in 512-byte blocks)   3000000
                                        MOUNT POINT       /var/mqm
                                        Mount AUTOMATICALLY at system restart ?  NO

                        # Mount /var/mqm
                               
                添加用户和组

                        # smitty mkgroup
                                Group Name    mqm
                                User List       root
                       
                        # smitty mkuser
                                User Name     mqm
                                Primary Group  mqm

说明:必须向mqm组中添加root。用户不必将它们的主组设置为mqm。只要mqm在它们的组集合中,它们就能使用命令。如果用户现在只运行那些使用队列管理器的应用程序,它们就不需要mqm组的权限。

                软件安装

                        以root用户登录。
                在CD-ROM驱动器中插入MQSeries服务器CD-ROM。
                输入命令:“# smitty install_latest”。
                选择输入设备或目录:/dev/cd0 (CD-ROM驱动器)
                选择下列安装组件和文件集:
                        mqm.Client. Bnd
                        mqm.Server.Bnd
                        mqm.base.runtime
                        mqm.base.samples
                        mqm.base.sdk
                        mqm.client.rte
                        mqm.msg.en_US
mqm.server.rte
mqm.base.runtime
                       
安装补丁程序

        下载最新补丁,并按照其中的Readme.txt所述安装组件。一般是用命令
“# smitty update_all”

增加通讯端口

编辑/etc/services文件增加一项:
        MQSeries    1414/tcp
        说明:此端口默认是1414,如果不是使用默认端口,要按照指定的实际端口填写。

                修改通讯配置文件

                        编辑/etc/inetd.conf文件增加一项
                MQSeries stream tcp nowait mqm /usr/mqm/bin/amqcrsta amqcrsta [-m QM名]
说明:如果队列管理器是本系统的默认队列管理器,则不用[-m QM名],如果不认的队列管理器则需要在此句的末尾增加[-m QM名]。
                输入命令:
# refresh –s inetd
                编辑/etc/rc.net文件增加一行
                        tcp-keepidle=60  (1分钟)
                输入命令:
                        # no –a
                在创建了队列管理器后在/var/mqm/qmgrs/QMName/qm.ini文件中增加一项
                        TCP:
                        KeepAlive=Yes
                       
安装(配置)在B节点上
说明:在B节点机上安装MQSeries时,只需要在本地盘上安装即可,因为当共享盘mount到B机上时,相关mount点时会覆盖原有的内容。顺序按照在A节点机上的安装配置过程,安装MQSeries系统程序。
MQ在HACMP上的应用配置
编写MQ的启动和关闭脚本

说明:假设所编辑的启动和关闭脚本为MQStart、MQStop。
                        MQStart:
ipcs -m| grep mqm | awk '{print $2}'|xargs -i ipcrm -m {}
ipcs -s| grep mqm | awk '{print $2}'|xargs -i ipcrm -s {}
sleep 2
                                strmqm
                                banner mqm ok
                                sleep 5
                        MQStop:
                                endmqm –i QMTQ
                                banner qm ended !

在HACMP中定义应用服务器

                        # smitty hacmp
                                Cluster Configuration
                                        Cluster Resources
                                                Define Application Servers
                                                        Add an Application Server
                                                                Server Name       MQServer
                                                                Start  Script       /etc/appserver/MQStart
                                                                Stop  Script       /etc/appserver/MQStop

把MQ用到的资源加入资源组中

                        # smitty hacmp
                                Cluster Configuration
                                        Cluster Resource
                                                Change/show Resources/Attributes for a Resource Group
                                                (选择相应的资源组名)
                                                        Service IP label       (填service IP)
                                 File Systems          /var/mqm
                                                        Volume Groups        appvg
                                                  Application Server     MQServer
       
同步资源

                        # smitty hacmp
                                Cluster Configuration
                                        Cluster Resources
                                                Synchronize Cluster Resource

验证资源

                        # smitty hacmp
                                Cluster Configuration
                                        Cluster Verification
                               
                        启动HACMP
                                # smitty clstart
                                # tail –f /tmp/hacmp.out
                        验证接管
                                # smitty clstop
                                shutdown mode      takeover
用tail –f /tmp/hacmp.out命令分别查看两台机器上的MQSerices服务的启动、接管情况。

缴费中心测试环境的配置脚本

        队列管理器的创建

crtmqm -lc -lf 16384 -lp 2 -ls 1 -q QMTQ
strmqm QMTQ
runmqsc QMTQ < QMTQ_define.txt

        对象的定义

**机器1:
**IP                      168.33.112.68
**队列管理器名            QMTQ

**远程队列1               105591010001_1
**远程队列2               105591010001_2
**远程队列3               102591010002_1
**远程队列4               102591010002_2
**远程队列5               center_1
**远程队列6               center_2
**远程队列7               center_f




**本地接收队列1           corpor_1
**本地接收队列2           corpor_2
**本地接收队列3           corpor_3
**本地接收队列4           corpor_4
**本地接收队列5           ASYN
**本地接收队列6           SYNC
**本地接收队列7           105591010001_3         
**本地接收队列8           105591010001_4
**本地接收队列9           102591010002_3
**本地接收队列10          102591010002_4

**本地接收队列11         telecom_1
**本地接收队列12         telecom_f


**发送通道1               TQ.bank1
**发送通道2               TQ.bank2
**发送通道3               TQ.tele




** alter qmgr TRIGINT(10000)
** define channel(CHANNEL1) chltype(SVRCONN) TRPTYPE(TCP) mcauser('mqm')
def ql(deadq) defpsist(yes) maxdepth(20000) replace
def ql(ERRMSG) defpsist(yes) maxdepth(20000) replace
alter qmgr deadq(deadq)



def qr(105591010001_1) rname(105591010001_1) rqmname(QMBANK1) xmitq(QMBANK1) defpsist(yes) replace
def qr(105591010001_2) rname(105591010001_2) rqmname(QMBANK1) xmitq(QMBANK1) defpsist(yes) replace
def qr(102591010002_1) rname(102591010002_1) rqmname(QMBANK2) xmitq(QMBANK2) defpsist(yes) replace
def qr(102591010002_2) rname(102591010002_2) rqmname(QMBANK2) xmitq(QMBANK2) defpsist(yes) replace
def qr(center_1) rname(center_1) rqmname(QMTELE) xmitq(QMTELE) defpsist(yes) replace
def qr(center_2) rname(center_2) rqmname(QMTELE) xmitq(QMTELE) defpsist(yes) replace
def qr(center_f) rname(center_f) rqmname(QMTELE) xmitq(QMTELE) defpsist(yes) replace


def ql(QMBANK1) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) +
               trigger trigtype(first) trigdata(TQ.bank1) initq(system.channel.initq) replace
def chl(TQ.bank1) chltype(sdr) discint(1800) conname('HOSTBANK1(1414)') xmitq(QMBANK1) trptype(tcp) +
        shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace
def chl(bank1.TQ) chltype(rcvr) trptype(tcp) replace  


def ql(QMBANK2) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) +
               trigger trigtype(first) trigdata(TQ.bank2) initq(system.channel.initq) replace
def chl(TQ.bank2) chltype(sdr) discint(1800) conname('HOSTBANK2(1414)') xmitq(QMBANK2) trptype(tcp) +
        shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace
def chl(bank2.TQ) chltype(rcvr) trptype(tcp) replace  


def ql(QMTELE) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) +
               trigger trigtype(first) trigdata(TQ.tele) initq(system.channel.initq) replace
def chl(TQ.tele) chltype(sdr) discint(1800) conname('HOSTTELE(1414)') xmitq(QMTELE) trptype(tcp) +
        shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace
def chl(tele.TQ) chltype(rcvr) trptype(tcp) replace




def ql(corpor_1) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace
def ql(corpor_2) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace
def ql(corpor_3) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace
def ql(corpor_4) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace



def ql(ASYN) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace
def ql(SYNC) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace
def ql(105591010001_3) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace
def ql(105591010001_4) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace
def ql(102591010002_3) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace
def ql(102591010002_4) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace

def ql(telecom_1) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace
def ql(telecom_f) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace





第二章 商行前置机中间件MQ的安装与配置
说明:本节介绍MQSeries 5.0.6 for UnixWare7上的安装与配置。

环境检查
                硬件检查

可以在运行UnixWare7上的硬件满足MQSeries的要求,如果建立单独的文件系统要求/var/mqm文件系统的空间为1.5G。查看文件系统空间的命令是“# df –k”。

软件检查

确定UnixWare7系统是否安装了um7112.image或更高的补丁。查看命令为:pkginfo|grep uw711m2 (pkginfo |grep uw),如果补丁是m3、m4或者UnixWare7的版本是UnixWare7.1.3都可以安装MQSeries。
安装介质要求与准备
                MQSeries 5.0.6 for UnixWare7是一张CD-ROM。

创建文件系统

建立文件系统见《unixware裸设备的建立方法》。在测试和开发环境下可以不建文件系统直接使用目录/var/mqm,但用确保/var文件系统有足够的空间。

添加用户和组

说明:建立组mqm及用户mqm,要求mqm组是mqm的主组,mqm组包括root用户。
建立mqm组
命令是:#groupadd mqm
建立mqm用户
命令是:#useradd –g mqm mqm
将root用户增加到mqm组中
命令是:#usermod –G mqm root

内核参数调整

                说明:如果需要调整的参数目前的值大于所要求的值则不需要改动。
编辑文件/etc/conf/mtune.d/ipc
增大SEMOPM和SHMSEG的最大值。
编辑完成后的文件应包括如下内容:
SEMOPM max # of operations  per  semop  call.
SEMOPM          10    10       60
.
.
SHMSEG:  the  number  of  shared  memory  identifiers  allowed  per  process
SHMSEG            6         6       60

用如下脚本调整参数
/etc/conf/bin/idtune   MSGMAX  16500
/etc/conf/bin/idtune   MSGMNB  65532
/etc/conf/bin/idtune   MSGSSZ  16384
/etc/conf/bin/idtune   SEMMSL  150
/etc/conf/bin/idtune   SEMOPM  60
/etc/conf/bin/idtune   SEMUME  60
/etc/conf/bin/idtune   SHMMAX  40000000
/etc/conf/bin/idtune   SHMMNI  600
/etc/conf/bin/idtune   SHMSEG  60
/etc/conf/bin/idbuild
需要重启动机器命令为:“# shutdown –y –g0 –i6”。

软件安装

把介质光盘mount到系统中,命令为:“# mount –F cdfs –r /dev/cdrom/cdrom1 /mnt”,然后键入命令:“# pkgadd –d /mnt/uw7_506.img”。

在/etc/hosts文件中加入一行

168.11.204.1  HOST00 (说明:这个IP地址是缴费中心服务器的地址,要根据实际的IP来填写。)

增加通讯端口

MQSeries   6688/tcp (说明:这个端口默认是1414,我们有时设计是6688或其它的端口号,要根据实际端口号来填写。)

修改通讯配置文件

                在/etc/inetd.conf文件中加入一行,
MQSeries stream tcp nowait mqm /opt/mqm/bin/amqcrsta amqcrsta
再输入命令 “# ps -ef |grep inetd” “#kill -1 进程号”。
执行命令:# inconfig  tcp_keepidle  60

申请MQ License的方法

                以下是申请的例子:(说明:临时License只有2个月的使用期限)
收件人:support@willowtech.com , support2@willowtech.com
主题:I ask for a temporary license. (如果是申请永久的license,主题:I ask for a permanent license)
Hi,
The version of MQSeries is MQSeries 5.0.6 for UnixWare7.1.1
Before getting the Proof of Entitlement ID ,please give me a temporary license for our test now .Thanks!
My ename is TOM
My company name is FLINK.
My telephone is 086-07553302288-575
My email address is  ygxu@flink.net.cn
My Proof of Entitlement ID is 02122645F(在申请临时的license时,这一行不需要,只在申请永久的license时才需要加上这一行。这个ID在介质包的单独的一张纸上有。)

The output from the "uname -X" is

System = UnixWare

论坛徽章:
0
发表于 2006-03-28 22:06 |显示全部楼层
Node = whrtgs2
Release = 5
KernelID = 02/08/05
Machine = Pentium 4
BusType = ISA
Serial = 3JK000328
Users = 5
OEM# = 0
Origin# = 1
NumCPU = 1

According to the output from the command "ifconfig -a " , I find my IP address is
“168.33.112.61”.

把License文件license.dat放到/usr/local/flexlm/licenses目录中。
在网站 http://www.willowtech.com/support.htm可得到其它技术支持。
在/usr/local中建文件夹/flexlm/license,把申请的License文件license.dat放入/usr/local/flexlm/licenses文件夹中。

商行前置机测试环境的配置脚本
        队列管理器的创建

        crtmqm -lc -lf 16384 -lp 2 -ls 1 -q QMBANK1
strmqm QMBANK1
runmqsc QMBANK1< QMBANK1_define.txt

        对象的定义

                **队列管理器名            QMBANK1
**远程队列1               105591010001_3
**远程队列2               105591010001_4

**本地接收队列1           105591010001_1
**本地接收队列2           105591010001_2

**发送通道1              bank1.TQ

alter qmgr TRIGINT(10000)
define channel(CHANNEL1) chltype(SVRCONN) TRPTYPE(TCP) mcauser('mqm')
def ql(deadq) defpsist(yes) maxdepth(20000) replace
def ql(ERRMSG) defpsist(yes) maxdepth(20000) replace
alter qmgr deadq(deadq)

def qr(105591010001_3) rname(105591010001_3) rqmname(QMTQ) xmitq(QMTQ) defpsist(yes) replace
def qr(105591010001_4) rname(105591010001_4) rqmname(QMTQ) xmitq(QMTQ) defpsist(yes) replace

def ql(QMTQ) usage(xmitq) defpsist(yes) maxdepth(10000) maxmsgl(1048576) +
               trigger trigtype(first) trigdata(bank1.TQ) initq(system.channel.initq) replace
def chl(bank1.TQ) chltype(sdr) discint(1800) conname('HOSTTQ(6685)') xmitq(QMTQ) trptype(tcp) +
        shortrty(10000) shorttmr(30) longtmr(300) longrty(999999999) batchsz(50) replace
def chl(TQ.bank1) chltype(rcvr) trptype(tcp) replace  

def ql(105591010001_1) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace
def ql(105591010001_2) maxdepth(10000) defpsist(yes) maxmsgl(1048576) replace

MQ配置文件的调整

说明:QMName是自己队列管理器名,根据自己的实际名称来填写。
# cd /var/mqm/qmgrs/QMName
在qm.ini文件中增加
TCP:
KeepAlive=Yes
Channels:
AdoptNewMCA=ALL
PipeLineLength=2
MaxActiveChannels=200

文件修改完毕,需要重新启动队列管理器,命令为:
# endmqm –i QMName
# strmqm QMName


第三章 中间件MQSeries的维护与操作
MQ的日志清理
                错误日志

MQSeries用错误日志记录与MQSeries自身运行,队列管理器以及通道有关的消息。因此,错误日志对于MQSeries错误诊断非常重要。AIX 平台上的MQSeries错误日志:当队列管理器名称已知,并且队列管理器可用时,错误日志位于 /var/mqm/qmgrs/qmname/errors 目录下,如:与MQ通道有关的消息。当队列管理器不可用时,错误日志位于 /var/mqm/qmgrs/@SYSTEM/errors 目录下;当错误是与Client 应用程序有关,错误日志位于: /var/mqm/errors 目录下。系统管理员要定期观察错误日志,清楚产生错误的原因,并根据需要定期清理或备份错误日志。

                事务日志

MQSeries 有两种事务日志类型:环型日志和线型日志,所在目录为/var/mqm/log
环型日志预先指定日志文件的个数,MQ运行时事务日志循环使用这些文件。环型日志的日志文件所占空间不会增长,也无法备份MQ应用系统的映像。本系统现设计为环型日志。线型日志指MQSeries在运行的过程中会随着日志记录的增加而产生新的日志文件,线型日志的可以保证事务运行中产生的日志有足够的空间(除非文件系统空间不足),还可以把MQ应用系统的映像备份到日志中,在发生故障后完整地恢复,线型日志日志文件所占用的空间会不断增长,需要系统管理员定期手工删除过期的日志文件。

MQ的故障维护
        如何清除MQ队列管理器遗留的共享内存和信号量

下面列出的是一段用于清除MQSeries上一次遗留的共享内存和信号量的小程序。通常遇到的状况是当启动队列管理器时失败,返回消息AMQ8041,指明以前的进程依然在使用中。
        解决方法:运行以下脚本或命令。
        ipcs -m| grep mqm | awk '{print $2}'|xargs -i ipcrm -m {}
ipcs -s| grep mqm | awk '{print $2}'|xargs -i ipcrm -s {}

如何解决MQSeries 队列管理器无法启动报“AMQ5522”错误

当启动MQSeries 队列管理器时,无法启动,报“AMQ5522”错误。在产生的FDC文件中,可以看见:Probe Id 为 ZF037010 component 为 zfu_as_init 。这个问题一般是由于操作MQ的权限问题引起的。遇到这个问题后,按照以下步骤解决:

首先要确认MQ的用户mqm和root还在mqm组中,如果不是,添加到mqm组中。
再确认MQ的队列管理器的目录“/var/mqm/qmgrs/<q manager name>及所有子目录的用户为mqm,属组为mqm。再检查/etc/passwd 和/etc/group的操作权限,确认为664。再以用户root或mqm启动队列管理器即可。


如何删除一个无法使用但用命令又无法删除的Queue
在某些特殊清况下,用户在runmqsc命令界面下,创建某个Queue(例如名为EXA.LOCAL)的过程中,机器突然掉电或用户强行中断,可能会出现此Queue无法正常使用,但在删除时报: AMQ8101 Unexpected error (2063).
而用相同名字创建时又会说已有此Queue的信息。这是由于此Queue的安全信息变为

论坛徽章:
0
发表于 2006-03-28 22:07 |显示全部楼层
异常造成,可用下列办法先恢复它的安全信息,就能删除此Queue。
先进到如下目录:
对于UNIX系统为:$MQM/qmgrs/<qmanger name>/queues/auth
找到此Queue的名字,用此目录下其它Queue(如Q1!LOCAL)的内容覆盖此Q:
cp Q1!LOCAL EXA!LOCAL
如果没有此Queue的名字,也可使用上述命令直接创建,若EXA.LOCAL为用户创建的第一个Queue,则可再创建一个Queue,再用上述办法。
使用上述办法后,就能成功删除此Queue了。

连接故障维护
        MQ客户端与MQ服务器端通讯时报2035错误

通常情况下,MQ客户端与MQ服务器端通讯时,使用MQ服务器端的服务连接通道在MCAUSER属性中指定的用户作为MQ客户端连上来时使用的用户,如果MCAUSER属性值为空,则使用MQ客户端所在操作系统使用的用户作为MQ客户端连上来时使用的用户。通讯时,报2035错误,就是由于客户端与服务器端通讯时所使用的用户没有权限造成的。解决办法有两种:
方法1:
在服务器端的服务连接通道定义中设置MCAUSER属性的值为mqm:(下例中假设通道定义名为SERVER)
ALTER CHANNEL(SERVER) CHLTYPE(SVRCONN) MCAUSER("mqm")
同时确保mqm用户为mqm组的成员,具体办法随MQ 服务器所在的操作系统而定,在此就不再赘述。
方法2:
若保持MQ服务器端的通道定义的MCAUSER属性值为缺省值,即为空,则可将MQ客户端所使用的用户添加到MQ服务器所在的操作系统中。例如,若MQ客户端使用的用户为ADMIN,则在MQ服务器端添加用户ADMIN,并保证此用户在MQ服务器端的mqm组中,以及有执行队列管理器上的操作所必需的权限。

MQ通道消息序列号(MSN)复位问题

正常情况下,无论是重新启动队列管理器还是重新启动计算机,通道序列号都不会因此而变化,因而不需要进行复位操作。但是,当在通信双方的一方机器上重新安装MQ或者删除重新建立通道,或者手动对通道的一方进行复位,尽管通道仍然可以正常启动,但是当传送数据时,通信双方会因通道序列号不匹配而出错。在通道错误日志文件(/MQ安装目录/qmgrs/队列管理器名/errors/AMQERR01.LOG)中会出现AMQ9526错误,类似如下格式:
---------------------------------------------------------
AMQ9526: 通道 'SDR.TEST' 的消息序号出错。
说明:
本地和远程队列管理器对下一个消息序号不一致。当希望消息序号 1 时,发送了序号为 6 的消息。
操作:
确定该不一致的原因。有可能同步信息已损坏, 或已被逆序恢复成先前的版本。如果问题不能解决, 可用 RESET CHANNEL 命令在通道的发送端人工复位此序号。
---------------------------------------------------------
出现这种情况时,解决办法是:
用MQSC命令RESET CHANNEL(通道名)进行复位。
例如上述例子中,既可以在通道的发送方运行命令:
RESET CHL(SDR.TEST)
也可以在通道的接收方运行命令:
RESET CHL(SDR.TEST) SEQNUM(6)

RESET CHANNEL命令说明
该命令可以用于除SVRCONN 和 CLNTCONN 外的所有通道类型。但是,如果该命令用于发送或服务器通道,则除发送或服务器通道被复位外,另一端(接收或请求器通道)也会在下一次初始化时被同时复位。如果该命令被用于接收方或请求器方,另一方不会被自动复位。
如何检查远程机器上的MQSeries通道侦听程序是否在运行
在使用MQSeries进行通讯时,通讯双方需要先启动通道侦听程序,但是,当通讯出现故障时,如何知道对方的侦听程序已经在运行成为一个问题。以下介绍一个简单的办法, 使用telnet 检测对方的侦听程序:

运行命令格式:
telnet [对方IP地址] [对方MQ端口号]
如: telnet 10.2.2.11 1414
在Unix上,如果能建立连接,提示如下:
telnet 9.185.43.164 1414
Trying...
Connected to 9.185.43.164.
Escape character is '^]'.
在Windows NT上, Telnet 窗口左上方将出现黑色方块状光标。

以上操作如果不能确定是否已经建立连接,可以使用netstat命令查看。

命令格式:
netstat -n
如果已建立连接,出现 tcp4 0 0 10.2.2.11.1414 10.2.2.10.1587 ESTABLISHED
注意连接状态为ESTABLISHED
通道处于不确定性状态(INDOUBT)的解决方法
在某些异常情况下, 通道可能处于不确定状态,导致消息无法正常发送。本文说明检查不确定状态的方法,以及解决办法.
MQSC命令: DIS CHS(通道名) ALL

在通道的状态属性中, INDOUBT属性值为YES(仅对发送通道SDR, 服务器通道SVR, 和群集发送通道CLUSSDR有效). 通道处于不确定性状态的原因是通道的一方与另一方之间对消息是否发送或接收到不能达成一致.

通常情况下, 通道会在重新启动时自动进行再同步, 称为通道分辨(RESOLVE)可以采用MQSC命令或者 PCF 编程来进行通道分辨, 下面以MQSC命令为例说明:

在除MQ for Windows 95/98外的其它平台上, 使用 DISPLAY CHSTATUS命令来判断通道两端最后提交的逻辑工作单元 (LUWID),命令如下:
在发送端(通道的不确定端), 执行DISPLAY CHSTATUS(通道名称) SAVED CURLUWID
在接受端:
DISPLAY CHSTATUS(通道名称) SAVED LSTLUWID 在MQSeries for Windows中, DISPLAY CHSTATUS 不支持, 可以察看"部件"窗口中的通道状态属性.

如果以上两个LUWID一致, 则说明接收端已经提交不确定的UOW. 这种情况下, 可以用以下命令将不确定消息从传输队列中移去。
RESOLVE CHANNEL(name) ACTION(COMMIT)

如果以上两个LUWID不一致, 说明接收端尚未提交不确定的UOW. 这种情况下, 可以用以下消息保留不确定消息.
RESOLVE CHANNEL(name) ACTION(BACKOUT)
当通道状态属性INDOUBT变为NO并重新启动后, 通道即可重新传送传输队列中的消息。

常用MQ系统操作命令
        创建队列管理器

crtmqm QMNmae

        启动队列管理器
strmqm QMName

        停止队列管理器

endmqm –i QMName
常用MQSC脚本命令
       

查看队列管理器信息

DISPLAY QMGR

查看所有通道状态

DISPLAY CHSTATUS(*)

检查通道具体状态

DISPLAY CHSTATUS(ChannelName) ALL

检查通道配置

DISPLAY CHANNEL(ChannelName)

检查队列配置和深度

DIS QLOCAL(QName)
该命令的显示结果可以看出队列当前深度

启动通道

START CHANNEL(ChannelName)

停止通道

STOP CHANNEL(ChannelName)

解决通道中的可疑交易

RESOLVE CHANNEL(ChannelName) ACTION ( COMMIT | BACKOUT )

复位通道序号

RESET CHANNEL(ChannelName)

定义新对象

DEFINE

改变对象定义

ALTER

删除对象

DELETE

论坛徽章:
0
发表于 2006-03-29 11:28 |显示全部楼层

留个联系方式吧?

朋友留个MSN吧,交流一下

论坛徽章:
0
发表于 2006-03-29 20:18 |显示全部楼层
原帖由 bfx 于 2006-3-29 11:28 发表
朋友留个MSN吧,交流一下

惨,只有QQ361382208 ,邮箱:ygxu@flink.net.cn

论坛徽章:
0
发表于 2006-04-03 20:04 |显示全部楼层
支持一下

论坛徽章:
0
发表于 2006-05-31 20:26 |显示全部楼层
写得真不错!!很多地方有很重要的参考价值!!

论坛徽章:
0
发表于 2006-10-26 14:23 |显示全部楼层
请问这两行是要互相搭配的吗?

编辑/etc/rc.net文件增加一行
tcp-keepidle=60  (1分钟)
/var/mqm/qmgrs/QMName/qm.ini
KeepAlive=Yes

===========================

刚刚检查了我的环境居然没有tcp-keepidle=60  不知道会不会有问题?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP