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 » General Discussion » Expired messages cleaning

Post new topic  Reply to topic Goto page Previous  1, 2, 3
 Expired messages cleaning « View previous topic :: View next topic » 
Author Message
jefflowrey
PostPosted: Mon Oct 03, 2005 9:45 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

Can you be more specific, perhaps about what a "loaded queue" is versus a regular queue?

Does this mean that, if I attempt to put a message to a queue that has reached it's maxqdepth, but messages are expired on that queue, then the expired messages will be removed to make room for the new one?

I think Peter and I are both of the opinion that the only thing that removes expired messages in both v5 and v6 on distributed is a GET that would otherwise have retrieved the message. And to our reading, markt's comments contradict that. Specifically his comment about ExpiryInterval says to me that v6 on distributed will perform the same functions that z/OS does - where it will periodically purge expired messages without requiring a GET - but you can't use ExpiryInterval to TUNE this.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
wschutz
PostPosted: Mon Oct 03, 2005 11:04 am    Post subject: Reply with quote

Jedi Knight

Joined: 02 Jun 2005
Posts: 3316
Location: IBM (retired)

Quote:
Specifically his comment about ExpiryInterval says to me that v6 on distributed will perform the same functions that z/OS does - where it will periodically purge expired messages without requiring a GET - but you can't use ExpiryInterval to TUNE this.
Interesting, if I put some messages on the queue with a short exiry (1 second), I see those messages a minute later in the curdepth. When I returned a hour later, they were gone. Soo....... looks like you interpertation is correct
_________________
-wayne
Back to top
View user's profile Send private message Send e-mail AIM Address
Michael Dag
PostPosted: Mon Oct 03, 2005 11:26 am    Post subject: Reply with quote

Jedi Knight

Joined: 13 Jun 2002
Posts: 2607
Location: The Netherlands (Amsterdam)

jefflowrey wrote:
markt's comments contradict that. Specifically his comment about ExpiryInterval says to me that v6 on distributed will perform the same functions that z/OS does - where it will periodically purge expired messages without requiring a GET - but you can't use ExpiryInterval to TUNE this.

it must use some value or interval somewhere, I can't believe anyone hardcoding parameters these days...

interesting to see what comes out of this discussion and if something changed in V6 distributed, then where is it documented...
_________________
Michael



MQSystems Facebook page
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
hopsala
PostPosted: Mon Oct 03, 2005 1:28 pm    Post subject: Reply with quote

Guardian

Joined: 24 Sep 2004
Posts: 960

Michael Dag wrote:
it must use some value or interval somewhere, I can't believe anyone hardcoding parameters these days...

I wish you were right, then I could change the queue buffer size for queues that serve large messages.

And let's not forget checkpoints (every 10000 transactions), the recently-gotten message chain (512) and more...
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Mon Oct 03, 2005 1:44 pm    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7722

Hey Now!!!! This time I waited before browsing the queue that had 100 expired messages, and at around the 4 minute mark (after they expired), the q depth dropped to zero! It is repeatable.

So, what is really going on behind the scenes in 6.0 with expired messages? To me this is a pretty substantional change to not have been spelled out in detail. A lot of times a q depth of expired messages was at least a clue something was wrong. Now if a message goes to a DLQ or exception q and expires and blinks away, we get paged, only to go find an empty q, and then curse the monitoring system for "false" alerts. Yeah it was annoying to browse a queue only to get a 2033, but at least we knew something was in there becasue we saw the depth.

Hmmmm, I think this will be a good thing in the end, but its gonna take some getting used to. (and some understanding in detail!)

-Peter
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
mqrules
PostPosted: Mon Oct 03, 2005 4:08 pm    Post subject: Reply with quote

Centurion

Joined: 01 Jun 2005
Posts: 100
Location: US

On z/OS you can set the ExpiryInterval attribute on the qmgr, which will check the queues at that interval for expired messages and get rid of them. This could be a good or bad thing...

mr
Back to top
View user's profile Send private message
Volodya
PostPosted: Mon Oct 03, 2005 11:17 pm    Post subject: Reply with quote

Novice

Joined: 04 Mar 2004
Posts: 22
Location: Moscow

I put 100, 1000 and 10000 messages (1Kb) on a queue with a short expiry on MQ 6.0 - Windows 2000 Server.
Behaviour seems the same as 5.3.
I put 100000 messages and expired messages were cleared in queue
when queue storage has exceeded 20Mb for the first time and 25Mb in subsequent times.
And it is correct !
This effect is harmful at greater flows of messages.
There is no big necessity to clean queue often.
It can affect on perfomance.
Threshold 20Mb quite reasonable in my opinion at work with greater flows messages.
_________________
Vladimir Makushkin, WebSphere MQ administrator
Back to top
View user's profile Send private message
markt
PostPosted: Tue Oct 04, 2005 3:50 am    Post subject: Reply with quote

Knight

Joined: 14 May 2002
Posts: 508

a) it is new function in V6
b) the equivalent of ExpiryInt is not an exposed parameter.
c) the precise behaviour of expiry has NEVER been documented, at least apart from the z/OS ExpiryInt. The only guarantee is exactly the same as it's always been - that you will never be able to GET an expired message. The behaviour has changed several times internally, so any "rules" that people discovered - eg it required a destructive get or a browse, that might vary by platform and by release - were not part of the defined produc externals.
d) a loaded queue is (to a first approximation) a queue where someone has it open or has only recently closed it.
e) if a queue does not get loaded (because noone opens it) then any expired messages on the queue continue to sit on the queue. The queue manager doesn't want to go to the expense of setting up all the memory and the I/O for a queue that noone's actually using.

So even with the new internals you cannot be certain that a message will be preemptively removed when expired. It's just a lot more likely.
Back to top
View user's profile Send private message
hopsala
PostPosted: Tue Oct 04, 2005 6:08 am    Post subject: Reply with quote

Guardian

Joined: 24 Sep 2004
Posts: 960

markt wrote:
d) a loaded queue is (to a first approximation) a queue where someone has it open or has only recently closed it.
e) if a queue does not get loaded (because noone opens it) then any expired messages on the queue continue to sit on the queue. The queue manager doesn't want to go to the expense of setting up all the memory and the I/O for a queue that noone's actually using.

So even with the new internals you cannot be certain that a message will be preemptively removed when expired. It's just a lot more likely.

However, even though it is undocumented and thus risky (pending changes in other versions - undocumented implicitly means unsupported), all those that had written an "expiry message cleaner" that MQGETs (BROWSE or other methods) from the queue, can now just MQOPEN and immediately close, and that will make sure all expired msgs are taken care of.
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Tue Oct 04, 2005 9:57 am    Post subject: Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7722

And I assume MQOPEN just for MQINQ is enough, as that is all I had open on the queue (using the little WatchQ Support Pac) watching the depth refresh every second.
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
Michael Dag
PostPosted: Tue Oct 04, 2005 10:52 am    Post subject: Reply with quote

Jedi Knight

Joined: 13 Jun 2002
Posts: 2607
Location: The Netherlands (Amsterdam)

markt wrote:
a) it is new function in V6

nice
markt wrote:
b) the equivalent of ExpiryInt is not an exposed parameter.

not so nice
markt wrote:
c) the precise behaviour of expiry has NEVER been documented, at least apart from the z/OS ExpiryInt. The only guarantee is exactly the same as it's always been - that you will never be able to GET an expired message. The behaviour has changed several times internally, so any "rules" that people discovered - eg it required a destructive get or a browse, that might vary by platform and by release - were not part of the defined produc externals.

and it could change again? (good reason for not documenting something...)
markt wrote:
d) a loaded queue is (to a first approximation) a queue where someone has it open or has only recently closed it.

BTW does this also apply to the MCA opening the queue???
markt wrote:
So even with the new internals you cannot be certain that a message will be preemptively removed when expired. It's just a lot more likely.

true, but then you could "see" the messages before they expired...

nice trick question for the V6 certification test
_________________
Michael



MQSystems Facebook page
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
hopsala
PostPosted: Tue Oct 04, 2005 2:21 pm    Post subject: Reply with quote

Guardian

Joined: 24 Sep 2004
Posts: 960

PeterPotkay wrote:
And I assume MQOPEN just for MQINQ is enough, as that is all I had open on the queue (using the little WatchQ Support Pac) watching the depth refresh every second.

Actually any sort of MQOPEN should be sufficient, since once you MQOPEN a queue it is "loaded", I have this excerpt out of the "v5.3 Internal presentation" by the illustrious Paul Clark of IBM (courtesy of wayne):

In the MQOPEN processing chapter, Paul Clark wrote:
The DAP performs the operations needed to make the physical (local) queue available. This is termed loading the
queue. It involves opening the file containing the underlying message data and allocating the shared memory buffers
and other shared resources necessary for the queue to be used. Of course, if the queue is already loaded, this work
can be avoided

Granted this is 5.3 behavior, and undocumented behavior at that, but really this is cross-version internal processing, and i'm quite sure it hasn't changed in v6.
Back to top
View user's profile Send private message
hopsala
PostPosted: Tue Oct 04, 2005 2:23 pm    Post subject: Reply with quote

Guardian

Joined: 24 Sep 2004
Posts: 960

Michael Dag wrote:
markt wrote:
d) a loaded queue is (to a first approximation) a queue where someone has it open or has only recently closed it.

BTW does this also apply to the MCA opening the queue???

Yes. An MCA is an MQ appl like any other, give or take a few mq calls only available for MCA's, MQCONN-MQOPEN-MQGET processing is normal.
Back to top
View user's profile Send private message
bruce2359
PostPosted: Thu Nov 09, 2006 9:29 am    Post subject: Reply with quote

Guest




Expiry is documented in substantial detail in the Application Programming Reference (sc34-6596-00), Chapter 12, page 151.
Back to top
Display posts from previous:   
Post new topic  Reply to topic Goto page Previous  1, 2, 3 Page 3 of 3

MQSeries.net Forum Index » General Discussion » Expired messages cleaning
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.