首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DIS QSTATUS与DIS CHSTATUS的总CONNAME值的差异

DIS QSTATUS与DIS CHSTATUS的总CONNAME值的差异
EN

Stack Overflow用户
提问于 2018-05-22 19:21:44
回答 1查看 910关注 0票数 1

我在IBM MQ v8上执行了两个mqsc命令,以找出App1在队列管理器QMGR上建立的连接数,并在一个名为CONNAME的属性上发现输出值之间的差异。

代码语言:javascript
复制
echo 'dis chs('APP1.SVRCONN.CHL')'| runmqsc QMGR | grep CONNAME

这一次我得到了14个IP作为CONNAME

代码语言:javascript
复制
echo 'dis qs(APP1.QUEUE) type(handle) All where(CHANNEL eq 'APP1.SVRCONN.CHL')'| runmqsc QMGR | grep CONNAME

当我检查由App1通道连接的唯一App1队列上的句柄数时,只有7个IP作为CONNAME

因此,App1队列上有7个句柄,但是队列管理器上的App1通道有14个连接。我如何将这两种价值观联系起来?这是每个队列句柄上的多线程连接吗?如果是的话,我如何找到它们之间的关系?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-22 21:44:03

DIS CHS命令将显示运行多少个通道实例,这实际上是在客户端和队列管理器之间建立了多少TCP会话。

MQV7.0.1及更高版本支持每个通道内的共享会话。每次应用程序连接到队列管理器时,这都可以是同一个通道实例中的另一个会话。客户端和服务器可以设置最大数量的共享连接。在队列管理器的SVRCONN上,属性是SHARECNV,在客户机上,它可以在CCDT中或编程中。当通道启动时,客户机和服务器将协商到它们之间的最低值。在DIS CHS上,您可以添加MAXSHCNV以查看正在运行的通道实例协商的最大值是多少,CURSHCNV则可以查看每个通道实例中有多少会话正在运行。

带有DIS QSTYPE(HANDLE)命令将只显示应用程序在运行命令时打开该队列的句柄的连接。

应用程序可以在不打开队列的情况下连接到队列管理器,或者它可以打开和关闭队列,如果没有在队列打开时捕捉到队列管理器,则不会看到句柄。

更准确的命令是DIS CONN,它将显示所有连接,每个连接代表一个会话,因此连接的数量应该与来自所有通道实例的CURSHCNV总数相匹配。

下面的命令将显示通过指定名称的通道运行的所有连接。

代码语言:javascript
复制
echo "DIS CONN(*) TYPE(ALL) WHERE(CHANNEL EQ APP1.SVRCONN.CHL)"|runmqsc QMGR

输出可能如下所示:

代码语言:javascript
复制
AMQ8276: Display Connection details.
   CONN(ABABABABABABABAB)
   EXTCONN(ABABABABABABABABABABABABABABABAB)
   TYPE(*)
   PID(99998)                              TID(998)
   APPLDESC(WebSphere MQ Channel)          APPLTAG(App1)
   APPLTYPE(USER)                          ASTATE(NONE)
   CHANNEL(APP1.SVRCONN.CHL)               CLIENTID( )
   CONNAME(10.10.10.10)
   CONNOPTS(MQCNO_HANDLE_SHARE_BLOCK,MQCNO_SHARED_BINDING)
   USERID(appuser)                         UOWLOG( )
   UOWSTDA( )                              UOWSTTI( )
   UOWLOGDA( )                             UOWLOGTI( )
   URTYPE(QMGR)
   EXTURID(XA_FORMATID[] XA_GTRID[] XA_BQUAL[])
   QMURID(0.0)                             UOWSTATE(NONE)
AMQ8276: Display Connection details.
   CONN(BABABABABABABABA)
   EXTCONN(BABABABABABABABABABABABABABABABA)
   TYPE(*)
   PID(99999)                              TID(999)
   APPLDESC(WebSphere MQ Channel)          APPLTAG(App1)
   APPLTYPE(USER)                          ASTATE(STARTED)
   CHANNEL(APP1.SVRCONN.CHL)               CLIENTID( )
   CONNAME(10.10.10.10)
   CONNOPTS(MQCNO_HANDLE_SHARE_BLOCK,MQCNO_SHARED_BINDING)
   USERID(appuser)                         UOWLOG( )
   UOWSTDA(2018-05-21)                     UOWSTTI(10.11.27)
   UOWLOGDA( )                             UOWLOGTI( )
   URTYPE(QMGR)
   EXTURID(XA_FORMATID[] XA_GTRID[] XA_BQUAL[])
   QMURID(0.99999)                         UOWSTATE(ACTIVE)

   OBJNAME(APP1.QUEUE)                     OBJTYPE(QUEUE)
   ASTATE(ACTIVE)                          HSTATE(INACTIVE)
   OPENOPTS(MQOO_INPUT_SHARED,MQOO_BROWSE,MQOO_INQUIRE,MQOO_SAVE_ALL_CONTEXT,MQOO_FAIL_IF_QUIESCING)
   READA(NO)

在上面的输出中,CONN(ABABABABABABABAB)只连接到队列管理器,没有打开对象,而CONN(BABABABABABABABA)连接到队列管理器并打开了队列APP1.QUEUE

如果要在上面的命令中添加|grep 'APP1.QUEUE',计数应该与DIS QS命令中的句柄数相匹配。

您可能有一个应用程序,它浏览一个连接上的队列以查找消息,然后向其他线程分派实际处理消息。在您的示例中,7个通道实例可能打开队列以供浏览,而其他7个将等待打开队列以输入以读取消息。

下面是我在Linux上使用的命令,它将显示DIS CONN命令的CSV格式以及打开的每个对象。

代码语言:javascript
复制
echo "DIS CONN(*) TYPE(ALL) WHERE(CHANNEL EQ CHL_NAME)"|runmqsc QMGR|grep -o '^\w\+:\|\w\+[(][^)]\+[)]' | awk -F '[()]' -v OFS='","' 'function printValues() { if ("CONN" in p) { print p["CONN"], p["CHANNEL"], p["APPLTAG"], p["USERID"], p["CONNAME"], p["OBJNAME"], p["OBJTYPE"], p["OPENOPTS"] } } /^\w+:/ { if (x !~ /YES/) {printValues()}; x = "NO"; delete p; next } { p[$1] = $2 } { if ("OPENOPTS" in p) { printValues() ; delete p["OPENOPTS"]; x = "YES"} } END { if (x !~ /YES/) {printValues()} }'|sed -e 's/^/"/g' -e 's/$/"/g'

CSV输出中的字段是:

代码语言:javascript
复制
"CONN","CHANNEL","APPLTAG","USERID","CONNAME","OBJNAME","OBJTYPE","OPENOPTS"

对象可以是QMGR本身、队列、主题等。如果同一个CONN打开了多个对象,那么CONN id将在输出的行中重复。如果CONN没有打开对象,您将看到一行末尾没有列出对象的单个条目,如果至少打开了一个对象,则不会有代表任何对象的行:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50475063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档