Author |
Message
|
dextermbmq |
Posted: Tue Aug 20, 2019 6:45 am Post subject: Channel disconnection after HBINT expires |
|
|
Voyager
Joined: 26 Jul 2014 Posts: 77
|
Hello,
I am running some tests based on my understanding of HBINT through the infocentre. I have a simple setup with 2 queue managers communicating over SDR-RCVR channels. Both the channels are set with default HBINT of 300. The SDR DISCINT value is 6000.
I started the channels and both the SDR and RCVR channels came in RUNNING State. A min after I deliberately killed the Listener process of the RCVR channel. As per HBINT/DISCINT literature in the infocentre :
1-The SDR channel would send the heartbeat after 5 mins if no message arrives in the SDR Transmission queue.
2-Since the TCP link is now broken due to RCVR listener not being in running state , the RCVR channel would not receive the Heartbeat from the SDR end.
3-As the HBINT value is > 60 secs, the RCVR channel should disconnect after 300+60 secs. (based on the Receive Timeout value from this link :
https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.con.doc/q015650_.htm). Once the channels have gone to INACTIVE state, the next attempt to start the SDR channel(manually or putting a msg in XMITQ) will result in channel to goto RETRYING state
Unfortunately, for me both the channels (SDR and RCVR) remained in Running state till DISCINT interval of 100 mins expired when the channels should have got disconnected in the 1-st 6 mins. Is there something I am missing ?
Regards |
|
Back to top |
|
 |
gbaddeley |
Posted: Tue Aug 20, 2019 5:17 pm Post subject: |
|
|
 Jedi Knight
Joined: 25 Mar 2003 Posts: 2538 Location: Melbourne, Australia
|
Quote: |
...A min after I deliberately killed the Listener process of the RCVR channel... |
What process name did you actually kill?
If it was runmqlsr (the MQ Listener process), it will have no effect on channels that are already running. It will however cause channel starts on remote queue managers or clients apps to fail. _________________ Glenn |
|
Back to top |
|
 |
hughson |
Posted: Tue Aug 20, 2019 8:42 pm Post subject: |
|
|
 Padawan
Joined: 09 May 2013 Posts: 1959 Location: Bay of Plenty, New Zealand
|
As Glenn notes - the runmqlsr process will not affect the running channel.
Channels do not run inside the runmqlsr process they run inside one of the amqrmppa processes, and it is not at all easy to know which one, or to know which other channels you might effect by killing an amqrmppa process.
If you want to see HBINT in operation shutting down a channel one way to try would be as follows:-
- Start up SDR-RCVR channel
- Issue STOP CHANNEL(name) on the RCVR end
- Wait for HBINT time to pass - then you will see the channel actually come down. Until HBINT has passed, you will see DISPLAY CHSTATUS of the RCVR show STOPREQ(YES) but still be running.
Explanation
SDR-RCVR channel is half-duplex. The RCVR channel only gets a chance to say things to the SDR at certain points in the protocol. One of those points is in response to a Heartbeat flow (the other is at the end of a batch of messages). So the RCVR cannot tell the SDR that it is time to stop until he gets a chance to 'speak'. This is why it takes until the HBINT passes before the stop is actioned.
Of course if you say STOP CHANNEL(name) MODE(FORCE) at a RCVR that has a different effect, it kills the TCP/IP socket, and the SDR will notice that sooner.
Cheers,
Morag _________________ Morag Hughson @MoragHughson
IBM MQ Technical Education Specialist
Get your IBM MQ training here!
MQGem Software |
|
Back to top |
|
 |
dextermbmq |
Posted: Wed Aug 21, 2019 2:41 am Post subject: |
|
|
Voyager
Joined: 26 Jul 2014 Posts: 77
|
Thanks Glen(yes I ended the runmqlsr process) and Morag.
Does that mean even if the RCVR listener process is down, the TCP network link created when we started the SDR channel (that connects to the RCVR Queue Manager over the RCVR Listener
port) would still be able to successfully send the Heartbeats and the RCVR Queue Manager would be able to acknowledge and respond to them ?
I did test the HBINT behavour by issuing the STOP CHANNEL command to the RCVR channel and the SDR channel status showed MCASTAT(NOT RUNNING) in 5mins.
Regards |
|
Back to top |
|
 |
PeterPotkay |
Posted: Wed Aug 21, 2019 3:51 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
dextermbmq wrote: |
Does that mean even if the RCVR listener process is down, the TCP network link created when we started the SDR channel (that connects to the RCVR Queue Manager over the RCVR Listener
port) would still be able to successfully send the Heartbeats and the RCVR Queue Manager would be able to acknowledge and respond to them ?
|
Yes.
The Listener process only listens for new incoming connections and hands them off to other processes. Once that hand off occurs the Listener process does not know or care about what happens with those channels. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
hughson |
Posted: Wed Aug 21, 2019 6:52 pm Post subject: |
|
|
 Padawan
Joined: 09 May 2013 Posts: 1959 Location: Bay of Plenty, New Zealand
|
|
Back to top |
|
 |
HubertKleinmanns |
Posted: Thu Aug 22, 2019 1:02 am Post subject: |
|
|
 Shaman
Joined: 24 Feb 2004 Posts: 732 Location: Germany
|
dextermbmq wrote: |
Does that mean even if the RCVR listener process is down, the TCP network link created when we started the SDR channel (that connects to the RCVR Queue Manager over the RCVR Listener
port) would still be able to successfully send the Heartbeats and the RCVR Queue Manager would be able to acknowledge and respond to them ? |
There are two processes you may look for:
- amqrmppa: This is the channel pooling process, which handles one or more incoming channel connections.
- runmqchl: This is a process of an outgoing channel.
Killing these processes would kill the channel connection.
So if you want to stop a sender channel, look for a process like this
Code: |
runmqchl -c <your_channel_name> |
and kill this process. _________________ Regards
Hubert |
|
Back to top |
|
 |
|