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 » Large messages, approx 90 MB

Post new topic  Reply to topic
 Large messages, approx 90 MB « View previous topic :: View next topic » 
Author Message
4integration
PostPosted: Mon Jun 18, 2007 1:10 pm    Post subject: Large messages, approx 90 MB Reply with quote

Disciple

Joined: 04 Sep 2006
Posts: 197
Location: Gothenburg, Sweden

Hello,

I have a MRM/CWF message containing:
1 header, 80 chars/8 fields
x items, 400 chars/22 fields

When running this without any split the broker (v6) dies and therefore I have started to look into a split function (which have solved similar problems before).

Instead of parse the complete message into CWF field I have created a msgdef that have a 80 char header part and x number of 400 char items.

Then my thought was to split the message into maybe a header + 10 items per propagate and Reset Content Descriptor to the "real" msgdef.

The problem is that the broker still dies on the input node...

Any idea how to get this solved??
_________________
Best regards
4 Integration
Back to top
View user's profile Send private message
Michael Dag
PostPosted: Mon Jun 18, 2007 1:25 pm    Post subject: Reply with quote

Jedi Knight

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

contact IBM and open a PMR, your broker should not die...
_________________
Michael



MQSystems Facebook page
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
kimbert
PostPosted: Mon Jun 18, 2007 2:23 pm    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

The broker should not die, but you could explore this alternative...v6 CWF supports 'repeat until end of bitstream'.

- Model your repeating structure as an element with maxOccurs=-1
- Set 'Parse Timing' to 'On demand'
- Write your ESQL to access one instance of the structure at a time.

There's a good description of this kind of technique here. I think the examples are for XML, but they can be applied just as well to CWF:
http://www-128.ibm.com/developerworks/websphere/library/techarticles/0505_storey/0505_storey.html
Back to top
View user's profile Send private message
4integration
PostPosted: Mon Jun 18, 2007 11:11 pm    Post subject: Reply with quote

Disciple

Joined: 04 Sep 2006
Posts: 197
Location: Gothenburg, Sweden

Thanks, I will look into that and also try to make use of URL with CWF.


A design question...
The incoming message are based on fixed length fields and currently the message sets are using CWF.
Comparing to TDS (which should also be able to handle this, or?) which format is best from a performance point of view??
_________________
Best regards
4 Integration
Back to top
View user's profile Send private message
4integration
PostPosted: Mon Jun 18, 2007 11:44 pm    Post subject: Reply with quote

Disciple

Joined: 04 Sep 2006
Posts: 197
Location: Gothenburg, Sweden

kimbert wrote:
The broker should not die, but you could explore this alternative...v6 CWF supports 'repeat until end of bitstream'.

- Model your repeating structure as an element with maxOccurs=-1
- Set 'Parse Timing' to 'On demand'
- Write your ESQL to access one instance of the structure at a time.


Now I have the "LargeMessageMsgDef" which looks like:

Code:
LargeMessage (LargeMessageType)
  - Header (xsd:string)
    - Logical properties:
      - Min: 1
      - Max: 1
    - Physical Properties:
      - Length count: 80 bytes
  - Msg (xsd:string)
    - Logical properties:
      - Min: 1
      - Max: -1
    - Physical Properties:
      - Length count: 400 bytes


On the MQ input node "Parse Timing" = "On Demand"

I have increased the JVM HeapSize to 512 MB:
Code:
C:\Program Files\IBM\MQSI\6.0>mqsireportproperties WBRK6_DEFAULT_BROKER -e DEFAULT_EG -o ComIbmJVMManager -n jvmMaxHeapSize

536870912

BIP8071I: Successful command completion.


When running with the ~90 MB message I get:
Code:
JVMDG217: Dump Handler is Processing OutOfMemory - Please Wait.
JVMDG315: JVM Requesting Heap dump file
......JVMDG318: Heap dump file written to C:\Program Files\IBM\MQSI\6.0\bin\heapdump.20070619.092616.4152.phd
JVMDG303: JVM Requesting Java core file
JVMDG304: Java core file written to C:\Documents and Settings\All Users\Application Data\IBM\MQSI/common/errors/\javacore.20070619.092622.4152.txt
JVMDG274: Dump Handler has Processed OutOfMemory.
JVMST109: Insufficient space in Javaheap to satisfy allocation request
JVMDG217: Dump Handler is Processing OutOfMemory - Please Wait.
JVMDG315: JVM Requesting Heap dump file
......JVMDG318: Heap dump file written to C:\Program Files\IBM\MQSI\6.0\bin\heapdump.20070619.092627.4152.phd
JVMDG303: JVM Requesting Java core file
JVMDG304: Java core file written to C:\Documents and Settings\All Users\Application Data\IBM\MQSI/common/errors/\javacore.20070619.092633.4152.txt
JVMDG274: Dump Handler has Processed OutOfMemory.
JVMST109: Insufficient space in Javaheap to satisfy allocation request
Exception in thread "Thread-12" java.lang.OutOfMemoryError: JVMCI156:OutOfMemoryError, IBMJVM_ResizeArray - stAllocArray for new array failed
        at com.ibm.jvm.ExtendedSystem.resizeArray(Native Method)
        at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:112)
        at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1733)
        at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1642)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1089)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:309)
        at com.ibm.etools.vfd.comm.command.SerializerDeserializer.serialize(SerializerDeserializer.java:57)
        at com.ibm.etools.vfd.comm.command.SerializerDeserializer.serialize(SerializerDeserializer.java:42)


I have a break point after the input node and does not reach that, very frustrating...
have I missed something or do I need to increase the max JVM HeapSize even more?

Any input is appreciated!!
_________________
Best regards
4 Integration
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Tue Jun 19, 2007 12:23 pm    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

How did you determine that 512Mb was sufficient?

Did you read the article that was linked?

How many repeats do you actually have in the message that is causing your broker to fall over?

There won't be any noticable improvements using TDS instead of CWF. Simplifying the model - so that it treats the repeatable bits as large blocks of data rather than individual fields - will help some.

Did you open a PMR about the heap/core dump? What did IBM Support have to say?

Are you running at least Broker Runtime 6.0.0.3?
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
4integration
PostPosted: Tue Jun 19, 2007 12:46 pm    Post subject: Reply with quote

Disciple

Joined: 04 Sep 2006
Posts: 197
Location: Gothenburg, Sweden

jefflowrey wrote:
How did you determine that 512Mb was sufficient?


Actually I didn't have any good figure, just tried to increase it a little

Quote:
Did you read the article that was linked?

Yes, I have also used it in another scenario where we have repeatable elements in XML.
I am a "java guy" and not that good in ESQL + that we (the company) have as policy to use Java as the primary language in the broker, therefore I am trying to do the similar thing in Java but not very successful yet.
If you have any hints in how to do the similar thing in Java I would be very happy.

Currently I have only Message Domain (=MRM) set on the input node and it now passes the input node.

Quote:
How many repeats do you actually have in the message that is causing your broker to fall over?

The number of repeatable items is 250.968 (400 bytes each)

Quote:
There won't be any noticable improvements using TDS instead of CWF. Simplifying the model - so that it treats the repeatable bits as large blocks of data rather than individual fields - will help some.

Thanks. When I used the LargeMessage on MQ Input node I had each item as repeatable (400 bytes) but will try to increase that to maybe 40.000 or 400.000 bytes and see if it behaves better.

Quote:
Did you open a PMR about the heap/core dump? What did IBM Support have to say?
I have not yet opened a PMR (have not got the time for it )

Quote:
Are you running at least Broker Runtime 6.0.0.3?

Yes
_________________
Best regards
4 Integration
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Tue Jun 19, 2007 12:53 pm    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

There's not a lot different in Java than in ESQL - in terms of working with the message tree - that will improve the memory usage.

The thing that is different in Java, though, is that you should reuse objects as much as possible, and limit the number of new objects that you create. Which is really not that different from doing the same kinds of performance tuning in Java outside of Broker.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
4integration
PostPosted: Tue Jun 19, 2007 1:45 pm    Post subject: Reply with quote

Disciple

Joined: 04 Sep 2006
Posts: 197
Location: Gothenburg, Sweden

4integration wrote:
Quote:
There won't be any noticable improvements using TDS instead of CWF. Simplifying the model - so that it treats the repeatable bits as large blocks of data rather than individual fields - will help some.

Thanks. When I used the LargeMessage on MQ Input node I had each item as repeatable (400 bytes) but will try to increase that to maybe 40.000 or 400.000 bytes and see if it behaves better.

I tried to include several items per block; 40.000, 400.000 and 4.000.000 bytes per "item block" but it didn't help. The broker runs out of memory...
_________________
Best regards
4 Integration
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 » Large messages, approx 90 MB
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.