Posted: Mon Jan 25, 2010 10:47 am Post subject: Is there a way to time out a long running query?
Poobah
Joined: 15 May 2001 Posts: 7722
WMB 6.1.0.4
WMQ 6.0.2.7
O/S is RHEL 5
A message flow with HTTPS as input is deployed to a single EG. There are 10 instances of it - the Additional Instances property has been set. One of the things it does is call out to an Oracle DB running on a remote server. Running fine for months.
Then one day the Execution Group starts taking up almost all the CPU. The SYSTEM.BROKER.EXECUTIONGROUP.QUEUE starts backing up with messages from the Config Manager anytime anyone tries to do anything in this EG. The mqsireload command doesn't help as all it does is place additional messages into SYSTEM.BROKER.EXECUTIONGROUP.QUEUE. This EG is completely hosed and the only way out is to kill -9 it. (I suppose it may have freed up if we waited long enough - see below.)
The developers find out that the Oracle DB has gotten some new data loaded into it. Like a LOT of new data. And a query that used to take a few tenths of a second now just takes a real long time. They are confident that when this "lock up" occurs that only one of the 10 instances is the problem. The other 9 apparently won't except new requests.
The developers question to me was:
1. Is there any setting that could be set that will tell the query to time out after x seconds even if its still returning gobs and gobs of valid data that satisfy the query?
2. If other unrelated flows in that same execution group were still processing, why did the other 9 instances fail to accept new requests if the 10th one was busy choking on all the results of that mega query? _________________ Peter Potkay
Keep Calm and MQ On
There are a number of fixes in this area in 6.1.0.5 that may provide some relief.
It's certainly worth a test, since you've been able to isolate.
There are also some undocumented options you can set on ComIBMDatabaseManager using mqsichangeproperties, but I don't recall what they are off the top of my head.
And of course, you can probably tune query timeouts in your DB server or the db client config.
As for the unavailable instances, it's not clear whether the hangup is at the biphttplistener or inside the HTTPInput node code. I'd suspect the issue is more likely at the listener, but a trace should shed some light.
You know, the same trace you'd need to take if you opened a PMR.
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