Technical Blog Post
Abstract
Out of Memory Error in Maximo 7.5
Body
Out of Memory condition could occur when deploying ear file in Websphere console or when running Maximo 7.5
Additional configuration from Websphere is needed to avoid getting error: java.lang.OutOfMemoryError: Java heap space in the log.
Steps:
Open the WebSphere Application Server administration site by typing http://hostname:port/ibm/console
.
The port is the number of the HTTP administrative port, which is 9060 by default. Type an ID (any ID without a password) and log in to it.
Select Servers > Application servers > server1 > Java and Process Management > Process Definition > Java Virtual Machine
For 64-bit systems minimum/maximum can be set to 4096/4096
32-bit Windows minimum/maximum = 1280/1280
32-bit Linux and Unix minimum/maximum = 2048/2048
Select the Verbose garbage collection checkbox
Enter the following in the Generic JVM arguments field
Enter the following values in the Generic JVM arguments field, using a
space between each argument:
-Dsun.rmi.dgc.ackTimeout=10000
-Djava.net.preferIPv4Stack=true # for Windows
-Xdisableexplicitgc
-Xgcpolicy:gencon
-Xmn320m # -Xmn320m for 32-bit JVM, -Xmn1024m for 64-bit JVM
-Xlp64k # AIX
Below is an example of JVM arguments (for 32-bit windows environment) to support the recommended initial/max heap size of 2048m:
-Xgcpolicy:gencon -Xmn512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.rmi.dgc.ackTimeout=10000 -Djava.net.preferIPv4Stack=true
Below is an example of JVM arguments (for 64-bit windows environment) to support the recommended initial/max heap size of 4096m:
-Xgcpolicy:gencon -Xmn1024m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.rmi.dgc.ackTimeout=10000 -Djava.net.preferIPv4Stack=true
Click Apply and click Save at the top of this page.
Restart WebSphere Application Server.
These JVM settings will be written to the server.xml file in the path below:
C:\IBM\WebSphere\AppServer\profiles\AppSrv01\config\cells\IBM887-R9N40V6Node01Cell\nodes\IBM887-R9N40V6Node01\servers\server1
<jvmEntries xmi:id="JavaVirtualMachine_1183122130078" verboseModeClass="false" verboseModeGarbageCollection="true" verboseModeJNI="false" initialHeapSize="1024" maximumHeapSize="1024" runHProf="false" hprofArguments="" debugMode="false" debugArgs="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7777" genericJvmArguments="-Dsun.rmi.dgc.ackTimeout=10000 -Djava.net.preferIPv4Stack=true" executableJarFileName="" disableJIT="false">
<systemProperties xmi:id="Property_1" name="com.ibm.security.jgss.debug" value="off" required="false"/>
<systemProperties xmi:id="Property_2" name="com.ibm.security.krb5.Krb5Debug" value="off" required="false"/>
</jvmEntries>
I found out that by changing my server.xml like above and restart fixed a startup error "JVMJ9GC019E -Xmn too large for –Xms" in the native_stderr.log
Recommended database settings for both Oracle 10g and 11g database:
- cursor_sharing - We highly recommend that this be set to FORCE for optimal performance in Maximo. Currently, the value is set to EXACT
- processes - make sure this value is high enough to handle all of the concurrent connections expected to the database. We generally recommend 4000
- sessions - we generally recommend keeping this the same as processes, e.g. 4000
- transactions - we recommend this be set to 2425
- session_cached_cursors - the recommended value is 400
- session_max_open_files - the recommended value is 300
- nls_length_semantics - if you use Unicode or double-byte, then you would want to set this value to CHAR
Reference:
UID
ibm11129473