To configure java memory:
The java heap parameter=value is set in the JVMARGS string since OpenEdge 10.1B and later, which is configured in the AdminServerPlugins.properties and the ubroker.properties file for individual UBrokers. These files are both located in the <DLC>/properties install directory.
-Xms <size> sets initial Java heap size
-Xmx <size> sets maximum Java heap size
- It is recommended to use the same size for the minimum (-Xms) and maximum (-Xmx) heap size to reduce the periodic pause time that happens as a result of the cleaning up of the garbage collection to free-up the heap space.
- For 32-bit Progress (i.e. 32-bit Java) the heap limit is under 2 GB.
- The AdminServer must be re-started for the JVMARGS changes to be in use.
1. AdminServerPlugins.properties
The AdminServer and all processes/plugins started by the AdminServer will use the same JVM memory heap size values, when set in the following Sections:OpenEdge 10.1B to 11.6: AdminServer
Section: [PluginPolicy.Progress.AdminServer] JVMARGS Parameters: -Xms, -Xmx
OpenEdge 11.7, 12.x: AdminServer
Section: [PluginPolicy.Progress.ProAdsv]
JVMARGS Parameters: -Xms, -Xmx
- When the AdminServer is started as a Service, jvmstart uses the jvmargs from the "PluginPolicy.Progress.AdminServer" section, otherwise proadsv uses those in the "PluginPolicy.Progress.ProAdsv" section. It is advisable to update both sections since 11.7, 12.x
OpenEdge 10.1B to 11.7: UBrokers
Section: [PluginPolicy], [PluginPolicy.Progress,*] JVMARGS Parameters: -Xms, -Xmx
- The jvmArgs set in the PluginPolicy is for all Ubrokers started by the AdminServer
2. ubroker.properties
To tailor each Broker java process heap size differently jvmArgs can also be configured in the ubroker.properties file under specific broker definition, in their separate configuration area. (eg NameServer, AppServer, WebSpeed, DataServer)
The jvmArgs set in ubroker.properties file will overwrite any setting in AdminServerPlugins.properties.
3. Which jvmargs configuration settings take precedence?
In light of the above, the order of precedence is as follows:
The AdminServer's heap will only use the parameter values in AdminServerPlugins.properties:
jvmargs=-Xms128m -Xmx256m [+java params]
UBroker heap will use the parameter values:
a. Set GLOBAL ubroker non-overridable in AdminServerPlugins.properties under the Section:[PluginPolicy] jvmargs=-Xms32m
b. Set GLOBAL ubroker overridable after commenting out (a) [PluginPolicy] by setting specific jvmArgs in ubroker.properties under the UBroker-type Section: [UBroker]; [NameServer]
c. Overides (b) for UBroker-type, by setting specific jvmArgs in ubroker.properties under the Broker-instances Section: [UBroker.AS] [UBroker.WS]
d. Overides (c) for Broker-instances, by setting specific jvmArgs in ubroker.properties under than named Broker instance's Section eg [UBroker.AS.asbroker1] [NameServer.NS1] [UBroker.WS]
The following examples demonstrate the information above:Example 1: Java heap maximum memory limit is 512m for the AdminServer and all java processes unless it is overridden by an individual process setting:
AdminServerPlugins.properties:
[PluginPolicy.Progress.AdminServer] / [PluginPolicy.Progress.ProAdsv]
pluginclasspath=!{value-of:classpath}
classpath=<path to all required jar files in DLC/java/ext, DLC/java >
jvmargs=-Xmx512m [+java params]
Example 2: Java heap will use a minimum of 64m for all unified brokers under the AdminServer (eg: (NameServer, AppServer, WebSpeed, DataServer etc) in one place and will over-ride the global setting in Example 1.
AdminServerPlugins.properties:
[PluginPolicy]
jvmargs=-Xms64m
Example 3: Java heap maximum memory limit of 784m for the SonicMQ Adapter and will over-ride the global setting in Example 1:
AdminServerPlugins.properties:
[PluginPolicy.Progress.SonicMQ]
pluginclasspath=!{value-of:classpath}
classpath=<path to all required jar files in DLC/sonic, DLC/java>
jvmargs=-Xmx784m
Example 3: Java heap minimum of 128m and maximum of 1g for asbroker1 and will over-ride the global setting in Example 1 and the unified brokers setting in Example 2. This change is made in the ubroker.properties file.
ubroker.properties:
[UBroker.AS.asbroker1]
jvmArgs=-Xms128m -Xmx1024m