WebSphere MQ High Connection Count Issue

后端 未结 3 1330
执笔经年
执笔经年 2021-01-22 18:47

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

相关标签:
3条回答
  • 2021-01-22 19:34

    After doing lot more analysis and trying out different WAS and MQ settings, we ruled out any issue with configuration and code. While researching found following link http://www-01.ibm.com/support/docview.wss?uid=swg21605479. The issue was with Wily Introscope tool used to monitor the WAS server, it was making connections with MQ and not releasing them. We removed the monitoring from the Server and it is working fine since then. Thanks everyone here for their support.

    0 讨论(0)
  • 2021-01-22 19:43

    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 <QMGR> | 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 <QMGR> | 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.

    0 讨论(0)
  • 2021-01-22 19:48

    We had a similar problem where the connection count used to reach its limit once the application was kept active for hours.

    Our catch was to call disconnect() of the queue manager post enqueue or dequeue rather than close(). So make sure your finally block looks something like this.

    finally 
    {
        queue.close();
        qMgr.disconnect();     //rather than qMgr.close();      
    }
    
    0 讨论(0)
提交回复
热议问题