ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » IBM MQ Installation/Configuration Support » Queue Emptying Unexpectedly

Post new topic  Reply to topic Goto page 1, 2  Next
 Queue Emptying Unexpectedly « View previous topic :: View next topic » 
Author Message
jshailes
PostPosted: Mon Sep 07, 2009 6:40 am    Post subject: Queue Emptying Unexpectedly Reply with quote

Apprentice

Joined: 18 May 2009
Posts: 31

I'm having a few problems retrieving messages using jms from our queue.

We have a queue that is populated with messages from an external site through mqipt. The queue depth is 100,000. The server is struggling to keep up with the 4000 messages/min as we only read 500/min but it doesn't seem to explain the following problem:

UpTime (mins),MessagesRecieved,QueueDepth
1,4000,3500
2,8000,7000
3,12000,10500
4,16000,14000
5,20000,3200

For some unknown reason the queue depth drops significantly after 4-5 mins. Does anyone have any suggestions for what might be causing this?
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Mon Sep 07, 2009 6:48 am    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7722

The messages are expiring, or the messages are being consumed by another application.
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
sumit
PostPosted: Mon Sep 07, 2009 6:50 am    Post subject: Reply with quote

Partisan

Joined: 19 Jan 2006
Posts: 398

Is there any expiry interval set in the messages?
_________________
Regards
Sumit
Back to top
View user's profile Send private message Yahoo Messenger
jshailes
PostPosted: Mon Sep 07, 2009 6:57 am    Post subject: Reply with quote

Apprentice

Joined: 18 May 2009
Posts: 31

We talked about that and dismissed it on the basis that messages would expire on a linear basis as opposed to lots of messages being removed after 4 minutes?
As above it seems unlikely that we have an application ourselves that reads lots of messages such large intervals - I'm sure we've tried this but I'll restart the server just to make sure.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Mon Sep 07, 2009 7:04 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9469
Location: US: west coast, almost. Otherwise, enroute.

Quote:
We talked about that and dismissed it

Perhaps too quickly. Expired messages are purged from queues when the responsible qmgr component gets around to it.

EDIT: More specifically, expired messages are not deleted from queues as they expire; rather, they are deleted when the process that deletes expired messages comes to life - which is not linear. The subject of when the process comes to life has been discussed here many times.

In any case, a consuming application can never MQGET an expired message.

You have described symptoms. So, what exactly is the problem? Server too slow consuming messages?
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
jshailes
PostPosted: Mon Sep 07, 2009 7:26 am    Post subject: Reply with quote

Apprentice

Joined: 18 May 2009
Posts: 31

wuw, ok finally making sense thanks very much.

Our problem is definitely that we are consuming messages too slowly. Our single threaded app is running on tomcat. We pull 1 message from queue, do a bunch of processing on it and then loop. Expiry is 100s. We only get 12% of messages since the processing takes too long. The only solution I can think of is to move to an app server?
Back to top
View user's profile Send private message
WMBDEV1
PostPosted: Mon Sep 07, 2009 7:34 am    Post subject: Reply with quote

Sentinel

Joined: 05 Mar 2009
Posts: 888
Location: UK

jshailes wrote:
The only solution I can think of is to move to an app server?


Maybe, depends where your delay is. If your app its constantly opening connections to the QM time and time again then this will impact your performance and so yes you will benefit from the scalability and pooling features provided by an app server, but its worth proving this before you move as it would be a shame to buy the app server just to realise the delay was in your processing!

If this data is important then why the short expiry? If you are expiring the messages and you dont process them in the expiry period then im guessing its not worth processing them at all (else maybe look at making them never expire / expire over a longer period)?


Last edited by WMBDEV1 on Mon Sep 07, 2009 7:37 am; edited 1 time in total
Back to top
View user's profile Send private message
sumit
PostPosted: Mon Sep 07, 2009 7:36 am    Post subject: Reply with quote

Partisan

Joined: 19 Jan 2006
Posts: 398

jshailes wrote:
Expiry is 100s.

There you go. Set the a suitable time interval and try again.
_________________
Regards
Sumit
Back to top
View user's profile Send private message Yahoo Messenger
exerk
PostPosted: Mon Sep 07, 2009 7:46 am    Post subject: Reply with quote

Jedi Council

Joined: 02 Nov 2006
Posts: 6339

sumit wrote:
jshailes wrote:
Expiry is 100s.

There you go. Set the a suitable time interval and try again.


jshailes wrote:
We have a queue that is populated with messages from an external site through mqipt


The poster may not have that ability...
_________________
It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Mon Sep 07, 2009 7:46 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9469
Location: US: west coast, almost. Otherwise, enroute.

Expiry is a period of time expressed in tenths of a second, set by the application that puts the message.
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
jshailes
PostPosted: Mon Sep 07, 2009 8:02 am    Post subject: Reply with quote

Apprentice

Joined: 18 May 2009
Posts: 31

Thanks Bruce - I should've come back to the forum before trying to work that out!

We don't have control over the expiry, however the messages could be read and put onto a separate queue - this doesn't really solve our problem since we will be receiving messages at a rate of 4000/s 24/7. We simply need to process quicker.

The reason I thought an app server was the only way forward was that we could have multiple processes doing the work?

At the moment we have an app in tomcat - since it takes almost no time to read a message from the queue but approx 500ms to process. We can't significantly minimise the processing time since there is a lot of logic involved, so my thinking was that an app server can have the application executing many times as opposed to modifying the application to use threading?
Back to top
View user's profile Send private message
exerk
PostPosted: Mon Sep 07, 2009 8:11 am    Post subject: Reply with quote

Jedi Council

Joined: 02 Nov 2006
Posts: 6339

As an interim at least, either a multi-threaded application, or a number of instances of a non-threaded application, may solve the problem of expiry, but what other resources are exposed as part of the processing cycle? Why does it take 500ms to process a message? You may resolve your GET issue, but will you then be moving your bottleneck elsewhere?
_________________
It's puzzling, I don't think I've ever seen anything quite like this before...and it's hard to soar like an eagle when you're surrounded by turkeys.
Back to top
View user's profile Send private message
jshailes
PostPosted: Mon Sep 07, 2009 8:20 am    Post subject: Reply with quote

Apprentice

Joined: 18 May 2009
Posts: 31

The messages are of trains moving around a rail network so we need to make associations between messages in order to create the journey. The process of creating this journey, calculating its lateness after each message, and various other info is costly on resources - currently approximately 500ms. These calculations are our bottleneck.

I'm not all that interested in an interim, I need to get started on a long term solution. Was my reasoning of the app server reasonable? I'm just concerned about sharing resources - the separate processes need to share the same memory space - is this a feature of an app server?
Back to top
View user's profile Send private message
bruce2359
PostPosted: Mon Sep 07, 2009 8:36 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9469
Location: US: west coast, almost. Otherwise, enroute.

Quote:
Was my reasoning of the app server reasonable? I'm just concerned about sharing resources - the separate processes need to share the same memory space - is this a feature of an app server?

First: Is the app server sufficiently provisioned? That is, does the app server have enough cpus? Enough memory? Enough disk? Can the box be tuned?

Your app developers will know better if their app can tolerate multiple instances of the same process, and where the app cannot share resources.

I'm going to guess that there is a database behind all this that keeps track (?) of where the trains are. Can the db tolerate multiple processes?
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
jshailes
PostPosted: Mon Sep 07, 2009 8:50 am    Post subject: Reply with quote

Apprentice

Joined: 18 May 2009
Posts: 31

Thanks for your reply.

As you've probably guessed I have very limited knowledge of j2ee but unfortunately am responsible for the design of the app - we have begun implementation but are no means a long way through. The server we currently have is limited - core 2, 4gb, 500gb but we have no issues getting a proper system when required.

We are currently using hibernate to interface to the db - I am hoping this can be shared between processes. Also the objects that are not persisted need to be shared between processes. I think I should probably call it a day posting on here since I really need to get a deeper understanding.

Many thanks for everyones help, it really has saved us hours of surmising.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2  Next Page 1 of 2

MQSeries.net Forum Index » IBM MQ Installation/Configuration Support » Queue Emptying Unexpectedly
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.