As per our configuration, we have WAS version is 8.5.5.1, IBM MQ version 7.5.0.3. We are using 2 channels to connect to WMQ, one with MAXINST set to 250 and one with 500. SHAREC
There is a IBM developerWorks blog post "Avoiding run-away numbers of channels" by @MoragHughson that goes into detail about the various settings on a queue manager to limit total maximum channels for the entire queue manager (MaxChannels in qm.ini), a single channel (MAXINST), and a single client machine connecting to a channel (MAXINSTC).
There is MQGem Software blog post "MaxChannels vs DIS QMSTATUS CONNS" also by @MoragHughson (Thank you Morag for the helpful posts) that goes into detail on the differences between a connections (DIS CONN
) and channels (DIS CHS
).
Below are a few commands that can help with reconciling things (note I've tested these on Linux, if you are running on another OS and they don't work let me know and I'll try and provide a working example for that OS):
The command below will show you the connection identifier, channel name associated to the connection if any, and the IP address if any, the output is CONN,CHANNEL,CONNAME
.
echo "DIS CONN(*) CHANNEL CONNAME"|runmqsc | grep -o '^\w\+:\|\w\+[(][^)]\+[)]' | awk -F '[()]' -v OFS="," 'function printValues() { if ("CONN" in p) { print p["CONN"], p["CHANNEL"], p["CONNAME"] } } /^\w+:/ { printValues(); delete p; next } { p[$1] = $2 } END { printValues() }'
The command below will show you each running channel instance, the number of shared conversations, and the IP address connecting to the channel, the output is CHANNEL,CURSHCNV,CONNAME
.
echo "DIS CHS(*) ALL"|runmqsc | grep -o '^\w\+:\|\w\+[(][^)]\+[)]' | awk -F '[()]' -v OFS="," 'function printValues() { if ("CHANNEL" in p) { print p["CHANNEL"], p["CURSHCNV"], p["CONNAME"] } } /^\w+:/ { printValues(); delete p; next } { p[$1] = $2 } END { printValues() }'
Both of the above commands can by adapted to use the mqsc
program that you showed you use in your comments.