Feedback
Did this article resolve your question/issue?

   

Article

How to increase or modify java heap size for the AdminServer and ubrokers in OpenEdge ?

« Go Back

Information

 
TitleHow to increase or modify java heap size for the AdminServer and ubrokers in OpenEdge ?
URL NameP99089
Article Number000141616
EnvironmentProduct: OpenEdge
Version: 10.x, 11.x
OS: All supported platforms
Other: AdminServer, ubrokers
Question/Problem Description
How to increase or modify java heap size for the AdminServer in OpenEdge ?
How to increase java memory for AdminServer in OpenEdge?
Where to increase java heap for ubrokers?
How do we set jvmargs for individual ubrokers?
Where to set JVMARGS in OpenEdge?
How to adjust JVM memory heap size in OpenEdge?
How to address java.lang.OutOfMemoryError ?
Which jvmargs configuration settings take precidence?
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Cause
Resolution
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 


 
Workaround
Notes
Last Modified Date9/28/2020 7:31 AM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.