Discussion:
SDI Derby Heap Setting
(too old to reply)
Ab Gaikwad
2017-10-17 19:05:25 UTC
Permalink
Hello,
I have been using a database connector in the delta mode to get changes for a few months. Recently the size of the database grew from about 60k rows to about 171k rows. So now when the delta assemblyline runs the Derby DB runs out of Heap. I had increased the Xms and Xmx settings for ibmdisrv already but that does not seem to affect Derby. My SDI server seems to automatically start Derby and I could not figure out any way to pass that settings to it.

To test if it solves my issue I killed the java process that was running Derby and manually ran it with the Xmx and Xms settings and it works fine without issue.

Is there a way to increase the heap size available to Derby when SDI automatically starts it?
Eddie Hartman
2017-10-18 12:38:21 UTC
Permalink
Post by Ab Gaikwad
Hello,
I have been using a database connector in the delta mode to get changes for a few months. Recently the size of the database grew from about 60k rows to about 171k rows. So now when the delta assemblyline runs the Derby DB runs out of Heap. I had increased the Xms and Xmx settings for ibmdisrv already but that does not seem to affect Derby. My SDI server seems to automatically start Derby and I could not figure out any way to pass that settings to it.
To test if it solves my issue I killed the java process that was running Derby and manually ran it with the Xmx and Xms settings and it works fine without issue.
Is there a way to increase the heap size available to Derby when SDI automatically starts it?
What you need to do is start Derby yourself with the heapsize you need (and any other preferred settings) instead of having the TDI Server auto-start it for you.

Hope this helps!

-Eddie
Ab Gaikwad
2017-10-18 14:31:22 UTC
Permalink
Thank you for the quick reply Eddie. I suspected that is what I would need to do so I wrote up a service for it (reused parts of startNetworkServer.sh in the AMC code). I just wanted to make sure there wasn't a way to pass the settings via TDI or update a script that it uses to generate the command.

Thanks again,
-Ab.
Eddie Hartman
2017-10-19 05:49:06 UTC
Permalink
Post by Ab Gaikwad
Thank you for the quick reply Eddie. I suspected that is what I would need to do so I wrote up a service for it (reused parts of startNetworkServer.sh in the AMC code). I just wanted to make sure there wasn't a way to pass the settings via TDI or update a script that it uses to generate the command.
Thanks again,
-Ab.
Just got this back from one of our gurus, Ab:
---
Since we use IBM JVM, it will respect an environment variable IBM_JAVA_OPTIONS.
If we set something there, not only will it apply to TDI, but also all Java processes started from TDI, including derby.

Therefore, you can start the ibmdisrv, ibmditk, or even the startNetworkserver script something like this (on Linux)

export IBM_JAVA_OPTIONS=-Xmx2G
ibmdisrv

For Windows you could use the set command to create an environment variable.

Or, you could add that line inside the script, so that you do not have to repeat it every time you want to use TDI to start Derby.
---
And so another option, albeit more of a shotgun approach :)

-Eddie
Ab Gaikwad
2017-10-27 13:56:32 UTC
Permalink
That worked great, Thank you Eddie.

Loading...