Author |
Message
|
tapak |
Posted: Tue Jul 18, 2006 6:16 am Post subject: Need clarification on Q Service Interval property |
|
|
 Centurion
Joined: 26 Oct 2005 Posts: 149 Location: Hartford,CT
|
I am trying to implement performance monitoring for a queue having performance issues . PERFMEV is anabled for the queue manager and i changed the QSVCEV to Hight and Queue Service Interval to 30000 milliseconds for the queue having the issue . I am viewing the event reports through candle .
As per my understanding , a Queue Service Interval High event should be generated for every put after the first put and when the time interval between each put is greater than 30 seconds . But I could see the event generated only on the second put ,but not on the third put even though the time interval between second and third put is more than 30 seconds and the queue is not empty .I didnt do any get in between . Is it the way it is suppose to work . Or is it related to my candle ocnfiguration. |
|
Back to top |
|
 |
tapak |
Posted: Wed Jul 19, 2006 4:58 am Post subject: |
|
|
 Centurion
Joined: 26 Oct 2005 Posts: 149 Location: Hartford,CT
|
Did I post in the wrong forum. Please let me know if this is not the right forum . |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Jul 19, 2006 5:10 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
It's the right forum.
I just think your understanding of the Queue Service Interval is wrong, and nobody wants to repeat the documentation to explain why.
That is, go back and look at the documentation on this interval again, and think about what it says some more. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
dgolding |
Posted: Wed Jul 19, 2006 5:32 am Post subject: |
|
|
 Yatiri
Joined: 16 May 2001 Posts: 668 Location: Switzerland
|
In case you haven't spotted it QSI seems to suggest that a QSI Event is generated after a message has been sitting for "N" seconds on the queue - but it doesn't. A message can sit on the queue for months and no event is generated. It's only when you do a second put or get that MQ looks at the queue and says "that poor message has been sat on this queue for months!" - which is a fat lot of good IMHO.
Better just to write something that returns the age of the 1st message on a queue - and alarm if it's higher than a threshold. |
|
Back to top |
|
 |
tapak |
Posted: Wed Jul 19, 2006 5:47 am Post subject: |
|
|
 Centurion
Joined: 26 Oct 2005 Posts: 149 Location: Hartford,CT
|
Hi Jeff ,
Thanks for your input . I am not sure I got it correctly after reading the documentation . That is the reason I posted the query .
As per the documentation ,
service timer measures the elapsed time between an MQPUT call to an
empty queue or an MQGET call and the next put or get, provided the
queue depth is nonzero between these two operations.
service timer is always active (running), if the queue has messages on
it (depth is nonzero) and a queue service interval event is enabled. If the
queue becomes empty (queue depth zero), the timer is put into an OFF
state, to be restarted on the next put.
For my example ServiceTimer starts on the first put to the empty queue . For my second put Queue ServiceInterval High Event is generated as per expectation .
My question is after the second put does the service timer reset to zero . If it doesnt reset to zero , I guess an event should be generated for my third put. Can someone explain in detail .
Also event is not generated if a single message is put to the queue and the queue is not read for the time specified in the service interval.Is there a reason why IBM designed to throw no events unless a second put or get occurs. |
|
Back to top |
|
 |
dgolding |
Posted: Wed Jul 19, 2006 6:13 am Post subject: |
|
|
 Yatiri
Joined: 16 May 2001 Posts: 668 Location: Switzerland
|
In answer to your first question, a
is when a get is done on a queue - so you could do 50 puts and it would not be reset.
The answer to your second question is - how would you do this? Only by a process scanning all queues and reporting when a queue is not being serviced - this is a monitoring function that should be supplied by a third-party monitoring tool.
The QSI event is only a statistical acknowledgement - it tells how long a queue was left "unserviced" - and that's all. |
|
Back to top |
|
 |
tapak |
Posted: Wed Jul 19, 2006 7:04 am Post subject: |
|
|
 Centurion
Joined: 26 Oct 2005 Posts: 149 Location: Hartford,CT
|
Quote: |
The QSI event is only a statistical acknowledgement - it tells how long a queue was left "unserviced" - and that's all. |
Thanks dgolding . That anwsers my question .
So I guess a monitoring tool needs to be implemented for my requirement . What are the third party tools providing this functionality .
Can it be done through Candle ?
Or should I write a program to check the MessageId of the firstmessage and throws an alert if the queue is not serviced in the given time interval . If so ,is it advisable to write in Java to monitor the queues.
I guess the monitoring program does the same logic but may be implemented in c for better performance. What is your thoughts ? |
|
Back to top |
|
 |
dgolding |
Posted: Wed Jul 19, 2006 7:11 am Post subject: |
|
|
 Yatiri
Joined: 16 May 2001 Posts: 668 Location: Switzerland
|
Candle probably has it - I know BMC Patrol did - but these products are anything but free.
I simply took a copy of amqsget.c (the sample program, removed the loop so it exited on first message), and displayed the time in seconds between now and the put date. The wrap-around script looked at the value and raised an alarmn if it was higher than a threshold. This needed to be invoked for every queue that needs monitoring. Simple, but effective  |
|
Back to top |
|
 |
tapak |
Posted: Wed Jul 19, 2006 7:56 am Post subject: |
|
|
 Centurion
Joined: 26 Oct 2005 Posts: 149 Location: Hartford,CT
|
That is a simple and effective way of doing it . I will give a try . Do you meant amqsbcg.c by the way? |
|
Back to top |
|
 |
dgolding |
Posted: Wed Jul 19, 2006 7:59 am Post subject: |
|
|
 Yatiri
Joined: 16 May 2001 Posts: 668 Location: Switzerland
|
Actually, you are right - yes it was amqsbcg - you need to format the put-time in the message header, and subtract it from the current date - this gives you the message age. |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Jul 19, 2006 2:05 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
And remember MQ has date and time in UTC. _________________ MQ & Broker admin |
|
Back to top |
|
 |
PeterPotkay |
Posted: Wed Jul 19, 2006 6:10 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
MQ 6.0 can tell you what the age is of the oldest message on the queue without browsing the message. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
tapak |
Posted: Mon Jul 24, 2006 7:32 am Post subject: |
|
|
 Centurion
Joined: 26 Oct 2005 Posts: 149 Location: Hartford,CT
|
|
Back to top |
|
 |
|