Author |
Message
|
Pats21 |
Posted: Thu Feb 26, 2009 4:58 am Post subject: Messageflow threads |
|
|
Disciple
Joined: 08 Sep 2006 Posts: 154
|
Hi All,
I have a query regarding the threads running for a messageflow.
I understand that each of the Execution Group created runs as a process and each of the messageflow deployed run as a thread under the execution group process. Each messageflow by default has one thread running. If the messageflow is reading message from an MQ queue, i.e. if it has a MQINPUT node as the starting node then we find that the IPPROC count on the queue is 1. We can increase the number of thread for each messageflow by using the property 'Additional Instances' present in the bar file that we use to deploy the messageflow.
However, I have a scenario that I cannot understand.
I have a messageflow with MQINPUT node and reading message from a queue. When I check the IPPROC on the queue it is 18. The value of 'Additional Instances' on the bar file that i used to deply the flow is '0'.
I checked the process that are running on the queue by checking the queue status and found that the process number is the same (which is basically the pid of the execution group) but there are different threads running under the same pid which have opened the queue.
Now I am not able to understand how there are more then one threads running on the same queue.
The queue is used by only one messageflow.
Kindly help me understand this and also let me know whether my understanding mentioned above is correct.
Also is it possible that the thread for the messageflow are hanging or waiting to be completed?
My environment details are:
MB version 5 CDS07, MQ v5.3, DB2 v8.1 and all running on Solaris.
Regards,
Pats ... |
|
Back to top |
|
 |
Gaya3 |
Posted: Thu Feb 26, 2009 8:22 am Post subject: |
|
|
 Jedi
Joined: 12 Sep 2006 Posts: 2493 Location: Boston, US
|
doesn't know the proper answer for this
you can verify the qmgr logs, broker logs etc
I would rather suggest you to upgrade MQ to V6 and MB to V6.1
 _________________ Regards
Gayathri
-----------------------------------------------
Do Something Before you Die |
|
Back to top |
|
 |
mqjeff |
Posted: Thu Feb 26, 2009 8:39 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Are you sure all the IPPROCs are from Broker?
Are you sure you only have one instance of one flow deployed, with one MQInput node that is pointed at this queue? |
|
Back to top |
|
 |
MQEnthu |
Posted: Fri Feb 27, 2009 12:50 am Post subject: |
|
|
 Partisan
Joined: 06 Oct 2008 Posts: 329 Location: India
|
stop the message flow and check the IPPROCS of the queue..
And are you sure that the other flows in that execution group are not reading from that queue? _________________ -----------------------------------------------
It is good to remember the past,
but don't let past capture your future |
|
Back to top |
|
 |
Pats21 |
Posted: Tue Mar 03, 2009 5:50 am Post subject: |
|
|
Disciple
Joined: 08 Sep 2006 Posts: 154
|
Gayathri - Yes, we have already starting moving to MBv6.1.
I checked on the queue and all the applications that have opened the queue are threads from broker and yes there is only one message flow running on this queue. |
|
Back to top |
|
 |
Tibor |
Posted: Tue Mar 03, 2009 6:55 am Post subject: |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
Please post the output of this command:
display qstatus(...) type(handle) all |
|
Back to top |
|
 |
mqjeff |
Posted: Tue Mar 03, 2009 7:07 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Tibor wrote: |
Please post the output of this command:
display qstatus(...) type(handle) all |
Tibor - that will only show you that some EG has a queue open, not which flow in which EG has it open. |
|
Back to top |
|
 |
Tibor |
Posted: Tue Mar 03, 2009 7:35 am Post subject: |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
mqjeff wrote: |
Tibor wrote: |
Please post the output of this command:
display qstatus(...) type(handle) all |
Tibor - that will only show you that some EG has a queue open, not which flow in which EG has it open. |
Jeff, I'm not sure there are no other application connected to this queue. But this output contents PIDs and TIDs that's why I thought it would be interesting. |
|
Back to top |
|
 |
kamy |
Posted: Tue Mar 03, 2009 10:30 am Post subject: |
|
|
Novice
Joined: 26 Oct 2001 Posts: 21
|
How about the putting application, i.e. what is writing to the queue? Is it closing the relevant connections.. |
|
Back to top |
|
 |
Pats21 |
Posted: Wed Mar 04, 2009 6:41 am Post subject: |
|
|
Disciple
Joined: 08 Sep 2006 Posts: 154
|
Hi All,
Here is the output of the "dis(qname) type(handle) all" command.
You can see that the PID is the same, however the TID is different.
Also I have checked the process id on the machine .. and it is the DataFlowEngine
******************
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(16)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(20)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(21)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(23)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(27)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(3
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(31)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(42)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(44)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(51)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(69)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(74)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(77)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(81)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(82)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(96)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(9
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
AMQ8450: Display queue status details.
QUEUE(INQUEUE) PID(6565)
APPLTAG(DataFlowEngine) TID(10)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(SHARED) INQUIRE(YES)
OUTPUT(NO) SET(NO)
USERID(wbiuser)
ps -ef | grep 6565
wbiuser 6565 6550 0 Dec 22 ? 6:04 DataFlowEngine TSTBRK 40aa0851-1101-0000-0080-8395ff6de5ba default 1
wbiuser 4738 3666 0 16:35:48 pts/2 0:00 grep 6565
******************
Also we are receiving message onto this queue from a remote queue on a different QM and which is configured to put message on this queue. So basically the receiver channel is the one that puts the message onto this queue. |
|
Back to top |
|
 |
kamy |
Posted: Wed Mar 04, 2009 9:06 am Post subject: |
|
|
Novice
Joined: 26 Oct 2001 Posts: 21
|
Pat,
Question - Does the message-flow display similar behavior across environments, (test / production)
If the flow is not running in production - I would kill the process by issuing a kill-9 and observe.
Regards
- Kamy |
|
Back to top |
|
 |
Tibor |
Posted: Wed Mar 04, 2009 11:53 pm Post subject: |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
kamy wrote: |
If the flow is not running in production - I would kill the process by issuing a kill-9 and observe. |
I don't think it would be a good idea (killing the DataFlowEngine process) because in this case the bipservice will restart it automatically. |
|
Back to top |
|
 |
kamy |
Posted: Thu Mar 05, 2009 3:48 am Post subject: |
|
|
Novice
Joined: 26 Oct 2001 Posts: 21
|
True, but it typically starts 1 thread. |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Mar 05, 2009 3:50 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Make sure you don't have some kind of loop in one of the flows in the EG.
Looks to me like you might have some loop with a get node that does not release the connection to the queue but builds a new one every time?  _________________ MQ & Broker admin |
|
Back to top |
|
 |
Tibor |
Posted: Thu Mar 05, 2009 4:03 am Post subject: |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
kamy wrote: |
True, but it typically starts 1 thread. |
No, it starts as many thread as the number of input connectors. |
|
Back to top |
|
 |
|