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 IBM MQ Support » Recieving MQRC_Q_FULL Error

Post new topic  Reply to topic Goto page 1, 2  Next
 Recieving MQRC_Q_FULL Error « View previous topic :: View next topic » 
Author Message
angelocook
PostPosted: Tue Sep 12, 2006 6:03 am    Post subject: Recieving MQRC_Q_FULL Error Reply with quote

Newbie

Joined: 12 Sep 2006
Posts: 9

I have just started receiving the MQRC_Q_FULL message in my applications that have been running perfectly fine for several months. I have 3 major queues in one queue manager, each of the queue has a max depth set at 9000000 and the default max message length of 4194304. The queue is set for persistance mode and the queues are located on a 13gb drive. When the queues are completly loaded with the work to be done, generally this is 400k message they are worked and move to another queue for logging. this has been working fine for at least a year. The only change is that more workers (threads) were added to handle the work loads. The messages being put on queue are small in nature and they are ASCII based from txt files which are 500mb and less then 500,000 messages. how am I reaching the FULL indicator?
Back to top
View user's profile Send private message
kevinf2349
PostPosted: Tue Sep 12, 2006 6:12 am    Post subject: Reply with quote

Grand Master

Joined: 28 Feb 2003
Posts: 1311
Location: USA

Uncommited messages maybe?
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Tue Sep 12, 2006 6:13 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

Did you confirm that the queue depth was less than 9000000?

Did you read the full description of MQRC_Q_FULL in the Messages manual, and follow all the suggestions it gives for handling this error?

Did you confirm that you are either not using Syncpoint or are making sure to always commit your PUTS and GETs?
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
angelocook
PostPosted: Tue Sep 12, 2006 6:48 am    Post subject: Reply with quote

Newbie

Joined: 12 Sep 2006
Posts: 9

I have not looked in the messages manual yet, i forgot about that one. I will check those. As far as the uncommited messages, I under the impression that we coded for commit after put. I will also check on that. My main concer is that i may have too many clients connecting to the MQ server, the server has no errors or warnings about being full or anything.
Strange.
Back to top
View user's profile Send private message
mvic
PostPosted: Tue Sep 12, 2006 7:03 am    Post subject: Reply with quote

Jedi

Joined: 09 Mar 2004
Posts: 2080

angelocook wrote:
My main concer is that i may have too many clients connecting to the MQ server

The number of clients connecting should not in itself be a problem. The number of messages is the problem if you get _Q_FULL.

It doesn't surprise me that MQ writes no errors - this is not a condition that in itself is a cause for concern.

You may wish to look into investigating this condition by using (a) queue depth events, or (b) API exits on MQPUT.
Back to top
View user's profile Send private message
angelocook
PostPosted: Tue Sep 12, 2006 7:10 am    Post subject: Reply with quote

Newbie

Joined: 12 Sep 2006
Posts: 9

But what concerns me is that this just started to happen when I have more clients processing the messages. if I reduce the number of clients the problem goes away but I process longer. I feel that i may have staturated my MQ servers connection to the storage of the data. we are using ISCSI connection to the data drive on a SAN for the storage of the queues.

thanks for all of the quick posts and validations. I will continue to look into this.
Back to top
View user's profile Send private message
kevinf2349
PostPosted: Tue Sep 12, 2006 7:18 am    Post subject: Reply with quote

Grand Master

Joined: 28 Feb 2003
Posts: 1311
Location: USA

Quote:
I under the impression that we coded for commit after put


Quote:
But what concerns me is that this just started to happen when I have more clients processing the messages.


Then I would definately check that the application is committing correctly.

Also check that the getting application is commiting after the GET too...and that it is doing a destructive get.

How is the reading(getting application) running? Does it run all the time?
Back to top
View user's profile Send private message
angelocook
PostPosted: Tue Sep 12, 2006 7:47 am    Post subject: Reply with quote

Newbie

Joined: 12 Sep 2006
Posts: 9

this is the code I am using (.Net), this is just a rough skeleton of the code.
I am not sure of the extended options, but this is the general code minus the error checks etc..

<-- snippet -->

public void Connect(string QueueName)
{
_MessageQueue = _QueueManager.AccessQueue( QueueName, MQC.MQOO_OUTPUT + MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_INQUIRE + MQC.MQOO_FAIL_IF_QUIESCING );
}

public string GetMessage()
{
MQMessage retrievedMessage = new MQMessage();
//Set the get message options..
MQGetMessageOptions gmo =new MQGetMessageOptions();
//accept the defaults same as MQGMO_DEFAULT get the message off the queue..
_MessageQueue.Get( retrievedMessage, gmo);
return retrievedMessage.ReadString(retrievedMessage.MessageLength);
}


public void PutMessage(string MessageText, MQ_MessagePriority MsgPriority)
{
MQMessage mMessage =new MQMessage();
mMessage.Priority = (int)MsgPriority;
mMessage.ClearMessage();
mMessage.WriteString( MessageText );
//specify the message options...
MQPutMessageOptions mMsgPutOpt =new MQPutMessageOptions();

//accept the defaults, same as MQPMO_DEFAULT constant put the message on the queue
_MessageQueue.Put(mMessage, mMsgPutOpt);
}
Back to top
View user's profile Send private message
bruce2359
PostPosted: Tue Sep 12, 2006 10:12 am    Post subject: Reply with quote

Guest




The Q_FULL message means exactly that: the queue has reached max queue depth.

Only two causes (and they are interrelated): the program(s) are MQPUTing messages to the queue and/or the the getting MQGETing isn't getting them (at all, or fast enough).

A possible technical solution: increase the max queue depth - this may help in the short-term. If the getting application is triggered by messages arriving in the queue, check trigger settings, check for trigger monitor error messages, trigger messages in the dead letter queue.

Your are correct in your assumption that more clients (running the PUTing application) will fill the queue faster. This may be good for business - unless the puting application has coding errors.

I'm assuming that your application architects said that 900000 is a reasonable number of messages to expect to be put to the queue. If not, the puting application has run amock.
Back to top
angelocook
PostPosted: Tue Sep 12, 2006 10:34 am    Post subject: Reply with quote

Newbie

Joined: 12 Sep 2006
Posts: 9

I have opened a case with IBM on this issue. From what I see and have designed there is no way that any of the queue(s) are getting full.

6000 flat files (2 sets 3000 each)
first set contain one line entries (400000 total individual pieces of work)
second set contains 26 lines per piece of work (400000 total individual pieces of work)
total size 400mb

Process1:
reads file set1 puts each entry on Queue1 for processing
reads file set2 puts each group on Queue2 for processing

Process2: get message from Queue1, processes message and put results on Queue3 for logging

Process3: get message from Queue2, processes message and put results on Queue3 for logging

Process3: get message from Queue3 and logs into RDBMS for review

::REPEAT::
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Tue Sep 12, 2006 10:49 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

What does the CURQDEPTH of the queue show when the error occurs?

What does a BROWSE of the queue show when the error occurs?
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
angelocook
PostPosted: Tue Sep 12, 2006 10:53 am    Post subject: Reply with quote

Newbie

Joined: 12 Sep 2006
Posts: 9

i am going to monitor the processes this evening. currently there is little work to be done. our bulk or heavy loads start at 6pm-7:30pm. i have perfmon running so i can retain the stats.
Back to top
View user's profile Send private message
kevinf2349
PostPosted: Tue Sep 12, 2006 11:40 am    Post subject: Reply with quote

Grand Master

Joined: 28 Feb 2003
Posts: 1311
Location: USA

Which queue is giving queue full?

Queue3 by any chance?
Back to top
View user's profile Send private message
angelocook
PostPosted: Tue Sep 12, 2006 12:24 pm    Post subject: Reply with quote

Newbie

Joined: 12 Sep 2006
Posts: 9

from the psuedo code posted before, its Queue3 and that process can handle 3000 per second and has never been above 4000 messages.

this is the strange part. I have spent alot of time designing and planning this, and in the year this has been functioning only in the last 4 days did i start getting this queue full error.

My IBM tech does not think its network traffic or number of clients (which went from 5 to 9, the only other change) the volume of work is a constant.

we deal with flights, a set number (3000 +-) and forcast for 1 year (365 days), do the math, max entries 1095000 +-, the kicker is we only forecast about 1/3 of those which gives me my average 400k entries. we have done a full forecast in the past processing all 1095000 with no issues.

I am stumpted. I am preparing to do trace logging for the IBM team to look into, of course it will be my luck that the problem wont manafest itself.
Back to top
View user's profile Send private message
Nigelg
PostPosted: Wed Sep 13, 2006 12:06 am    Post subject: Reply with quote

Grand Master

Joined: 02 Aug 2004
Posts: 1046

Quote:
What does the CURQDEPTH of the queue show when the error occurs?

What does a BROWSE of the queue show when the error occurs?


You did not answer these questions.

IBM support will certainly ask the same questions before even considering looking at a trace.
_________________
MQSeries.net helps those who help themselves..
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 » General IBM MQ Support » Recieving MQRC_Q_FULL Error
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.