Author |
Message
|
psyconic |
Posted: Thu Jun 18, 2015 6:11 pm Post subject: IIB9 Restful Service POST Size generating JVM Memory Error |
|
|
Novice
Joined: 17 Jun 2015 Posts: 11
|
Hi guys I am using IIB 9 and have a HTTP Input node accepting Restful calls containing JSON. Essentially what the service does is take a restful post containing JSON that in turn contains a base64 representation of a file. Then the service stores the data as binary to a database.
The flow works great. I use curl to post the JSON to the HTTP Input node in order to test it. As you can imagine images and video files can get quiet large. Once my JSON gets above 20 Megabytes the message never even enters the node so it can be debugged and appears to just hang.
This was tested with curl and the IIB9 Test system to eliminate curl. Upon looking at Computer Management > System Tools > Even Viewer > Windows Logs > Application
I see the following Error : -
Quote: |
If the event originated on another computer, the display information had to be saved with the event.
The following information was included with the event:
JVMDUMP039I Processing dump event "systhrow", detail "java/lang/OutOfMemoryError" at 2015/06/18 15:35:39 - please wait. |
After some research it lead me to increase the Java heap space for the broker which according to the settings were set ok. It seems to have no effect.
I am running a windows Windows 7 Enterprise Service Pack 1 , 64 Bit operating System with 8 Gigabytes of RAM in a VM.
With IBM Integration Toolkit
Version: 9.0.0.2
Build id: 9.0.0.2-20140515-1210
I have tried numerous recommendations for the minimum heap settings and maximum heap settings for the broker and they all seem to have no effect.
The system works great for Posted JSON less than 20 Meg but greater than that the system JVM Out of Memory Error occurs. With 8 Gig of RAM available I would imagine I should have more than enough to take a message a few hundred megabytes in size. I was wondering if anyone has anything to add or insight as to why the IIB9 HttpInput Node is limited to around 20 Meg posted messages.
I would appreciate any thoughts.
Thanks
Mike |
|
Back to top |
|
 |
mqjeff |
Posted: Fri Jun 19, 2015 4:24 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Are you using the bipHTTPlistener or the eg-level http listener?
Depending on which, you need to increase the corresponding heap.
Also, you may just want to look at using a PUT to send files and a FileRead node to gather the content, and then include information in the JSON about the file or files.
Although it is a much better idea to include them in the message, so you aren't working with the messiness of a file system. |
|
Back to top |
|
 |
psyconic |
Posted: Wed Jun 24, 2015 8:19 pm Post subject: |
|
|
Novice
Joined: 17 Jun 2015 Posts: 11
|
Hi Jeff I tried upping the heap size and it made no difference. I used the commands below: -
mqsichangeproperties DBKR -e default -o ComIbmJVMManager -n jvmMaxHeapSize -v 1024000000
mqsichangeproperties DBKR -e default -o ComIbmJVMManager -n jvmMaxHeapSize -v -1
Apparenly -1 is suppossed to be 256 Meg anyway.
I am wondering if there is some other parameter I need to set to allow larger messages to be posted to the http node. |
|
Back to top |
|
 |
stoney |
Posted: Wed Jun 24, 2015 8:57 pm Post subject: |
|
|
Centurion
Joined: 03 Apr 2013 Posts: 140
|
Hi,
If you are using the broker wide HTTP listener (biphttplistener), then changing the execution group JVM heap size will have no effect.
The broker wide HTTP listener would be the default for an HTTPInput node deployed to IIB V9.
It defaults to ports 7080/7043, whilst the per execution group HTTP listener defaults to ports starting from 7800/7843.
You can change the JVM heap size for the broker wide HTTP listener by following the steps here: http://www-01.ibm.com/support/docview.wss?uid=swg21626362
Cheers,
Simon |
|
Back to top |
|
 |
mqjeff |
Posted: Thu Jun 25, 2015 5:46 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
You may still need to increase the EG level Java Heap, once you get messages actually reaching the EG. |
|
Back to top |
|
 |
psyconic |
Posted: Thu Jun 25, 2015 8:54 pm Post subject: |
|
|
Novice
Joined: 17 Jun 2015 Posts: 11
|
@Stoney & mqjeff
Awesome.
Thanks guys, I got it all running at the EG level.
I had to increase the heap at broker level and EG level and also the broker level HttpConnector maxPostSize.
and yes it does default to the broker HttpListener contrary to some doco I read. Also the doco for maxPostSize said 0 is actually setting it to unlimited. Its actually setting it to 0. So I set that to 500Meg for testing and it works great.
35 Meg in a few seconds.
Thanks for the response. |
|
Back to top |
|
 |
|