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 » WebSphere Message Broker (ACE) Support » MQJMSTransform abend memory

Post new topic  Reply to topic
 MQJMSTransform abend memory « View previous topic :: View next topic » 
Author Message
Duke
PostPosted: Tue Dec 18, 2007 2:41 am    Post subject: MQJMSTransform abend memory Reply with quote

Apprentice

Joined: 09 Mar 2004
Posts: 49
Location: Belgium

Hi,

I have a message flow which reads +- 17200 records from an oracle database in a compute node using a single query.
For each record retrieved from the database, it creates an XML outputmessage (size <= 2 kb) that is propagated downstream the flow where there is a MQJMSTransform node which in turn puts it on a JMSOutput queue.
The flow is being triggered by one inputmessage. When I launch this flow, it retrieves the records from the database. After it has only outputted +- 1500 messages on the JMSOutputqueue the execution group crashes because of a memory abend (failed to allocate memory).

When I changed the JMSOutput node to an MQOutput node and added a JMSMQTransform node I still received the abend. However if I remove the two transformation nodes, all records are processed without any problem.

I have traced the memory for the execution group. In the case of a JMSMQTransform node it rapidely increases untill it is maxed out. Without JMSMQTransform node it remains stable all the time (and uses significantly less memory).

The settings of the nodes:

MQInput Node:
- Transaction Node: No.

Compute Node:
- Transaction: Automatic
- Compute mode: Message
- I have assigned the result of the query to a variable in the Environment. And for each records I issue a propagate (just "PROPAGATE") after I have filled in all the fields of the OutputRoot.

JMSOutput Node:
- Transaction Node: None.

MQOutput Node:
- Transaction Node: No.

In the ESQL of the while loop I have added the statement 'DELETE FIELD OutputRoot.XML/MRM' to clear memory, but that did not help.

I have increased the heapsize of the JVM, but that did not help either.

Hope that you can help us!

_________________
Pierre Richelle

Engineer
IBM Certified MQSeries Developper V5.3
IBM Certified WMQ Administration V6
Back to top
View user's profile Send private message Send e-mail
jefflowrey
PostPosted: Tue Dec 18, 2007 3:25 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

I would a) open a PMR, b) rework your flow in the following manner - assuming that the flow starts with an MQInput node:

MQInput-><stuff>->MQJMSTransform->Compute(query/propagate)->JMSOutput

You only need to do the MQJMSTransform once, to convert the MQInput header data into JMS header data. Then you can populate the JMS Properties and header data normally in your ESQL, to reflect the needed information for each output message.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » MQJMSTransform abend memory
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.