Performance tuning
This topic provides recommendations for tuning the deployment of BMC Release Process Management for optimal performance.
Recommended configurations
Depending on the RPM version you are using, see one of the following:
- Recommended configurations for 5.0.03.004 and later versions
- Recommended configurations for 5.0.03.003 and earlier versions
Recommended configurations for 5.0.03.004 and later versions
Use the following configurations for optimal performance of the product:
- Navigate to the RLMhome/releases/yourCurrentVersion/RPM/portal.war/WEB-INF/config directory and open the wildfly.yml file with a text editor.
- In messaging, perform the following steps to set the number of job to be executed:
- For the concurrency parameter in the AutomationHandler, enter the number of processors. The default is 6.
For example, if you want to set 10 processors for the automation queue, your concurrency parameter is the following:
messaging:
/queue/backgrounds/automation:
AutomationHandler:
concurrency: 10 Under ScheduledJobHandler, set the concurrency parameter to the number of scheduled jobs that must be processed without delay. The default value is 5:
For example, if you want to set 3 processors for the queue, you concurrency parameters is the following:
messaging:
/queue/backgrounds/automation
ScheduledJobHandler:
concurrency: 3
- For the concurrency parameter in the AutomationHandler, enter the number of processors. The default is 6.
- Go to the RLMhome\releases\productVersion\RPM\portal.war\WEB-INF\config directory and open the database.yml file with a text editor.
Ensure that the following parameters are set in the file:
production:
...
pool: 10 # NOTE: Increase the connection pool size
wait_timeout: 10
cursor_sharing: EXACT- Go to the RLMhome\releases\productVersion\RPM\portal.war\WEB-INF\config directory and and open the automation_settings.rb file with a text editor.
Ensure that the following automation parameters are set in the file:
...
$AUTOMATION_JAVA_OPTS = "-Xmx512m -Xms256m -Xss2048k"
...If the automation_settings.rb file is absent, ensure that the provided automation parameters are set in the automation_settings.default.rb file at the same location.
- Ensure that the following application parameters are set in the start file:
(Windows, start.bat)
...
set JAVA_OPTS="%JAVA_OPTS% -Xms1024m -Xmx4096m -XX:+CMSClassUnloadingEnabled"
...(Linux, start.sh)
...
export JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx4096m -XX:+CMSClassUnloadingEnabled"
...(Solaris, RLMhome\bin\start.sh)
...
JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx4096m -XX:+CMSClassUnloadingEnabled"
...
Recommended configurations for 5.0.03.003 and earlier versions
Use the following configurations for optimal performance of the product:
- Navigate to the RLMhome/releases/yourCurrentVersion/RPM/config directory and open the torquebox.yml file with a text editor.
In messaging, for the concurrency parameter, enter the number of processors for the automation queue. Default is 3.
For example, if you want to set 8 processors for the automation queue, your concurrency parameter is the following:messaging:
/queues/backgroundable/automation:
AutomationHandler:
concurrency: 8- Navigate to the RLMhome\releases\productVersion\RPM\config directory and open the database.yml file with a text editor.
Ensure that the following parameters are set in the file:
production:
...
pool: 10 # NOTE: Increase the connection pool size
wait_timeout: 10
cursor_sharing: EXACT- Navigate to theRLMhome\releases\productVersion\RPM\config directory and open the automation_settings.rb file with a text editor.
Ensure that the following automation parameters are set in the file:
...
$AUTOMATION_JAVA_OPTS = "-Xmx512m -Xms256m -Xss2048k"
...If the automation_settings.rb file is absent, ensure that the provided automation parameters are set in the automation_settings.default.rb file at the same location.
- Ensure that the following application parameters are set in the start file:
(Windows, start.bat)
...
set JAVA_OPTS="%JAVA_OPTS% -Xms1024m -Xmx4096m -XX:+CMSClassUnloadingEnabled"
...(Linux, start.sh)
...
export JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx4096m -XX:+CMSClassUnloadingEnabled"
...(Solaris, RLMhome\bin\start.sh)
...
JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx4096m -XX:+CMSClassUnloadingEnabled"
...
Verified parameter combinations
The following table provides a combination of verified parameters and hardware recommendations that you can use for optimal performance of the product. The sets included in the table are presented in an increasing order of performance and faster response time.
Parameter combinations
Parameter | Set 1 values | Set 2 | Comments |
---|---|---|---|
Concurrent users | < 10 | 30 | These are simultaneous users hitting web GUI simultaneous + users triggering requests with automations. |
MaxPermSize | 512 MB | 512 MB | None |
ms | 1024 MB | 1024 MB | Minimum Java heap size. To improve the application performance, BMC recommends setting the same maximum Java heap size value for both minimum and maximum Java heap size parameters. |
mx | 2048 MB | 4096 MB | Maximum Java heap size. To improve the application performance, BMC recommends setting the same maximum Java heap size value for both minimum and maximum Java heap size parameters. |
concurrency | 3 | 3 | The count presented in the sets indicate the number of parallel-automated steps that can run concurrently. |
pool | 10 | 30+ | Pool indicates the maximum number of database connections made by the application. This count must be less or equal to the maximum connections configured in a database server. |
Recommended hardware | Set 1 values | Set 2 values |
|
CPU cores | 2 | 4 | None |
Physical memory | 4 GB | 8 GB | Tip: You can calculate the optimal physical memory size for your environment using this formula. |
Calculating physical memory size
The recommended physical memory size required to run RPM depends on the JAVA_OPTS parameters that define the memory used by the servers and automation. The maximum JAVA_OPTS value that is defined by default for servers is 4096 MB and for automation is 128 MB. You can increase these parameters and calculate the required physical memory size based on your changes. For more information on how to modify the JAVA_OPTS values, see .
To calculate the minimal physical memory size
Memory = 1.5 × Xmx(JAVA_OPTS) + concurrency × Xmx(AUTOMATION_JAVA_OPTS)
- Xmx(JAVA_OPTS)—The maximum size of the memory allocation pool for servers defined in the RLMhome\bin\start.bat (Windows) or RLMhome\bin\start.sh (Linux or Solaris) file
- concurrency—A number of automation handlers defined in the wildfly.yml Version 5.0.03.004 or later or torquebox.yml Version 5.0.03.003 or earlier file
- Xmx(AUTOMATION_JAVA_OPTS)—The maximum size of the memory allocation pool for automation defined in the automation_settings.rb file
To calculate the recommended physical memory size
Memory = 2 × Xmx(JAVA_OPTS) + concurrency × Xmx(AUTOMATION_JAVA_OPTS)
Recommended deployment
The following table provides information about a recommended deployment scenario.
Deployment scenario
Scenarios | Percentage of total concurrent users | Transaction rate |
---|---|---|
Users creating and executing 100% automated requests | 10% | 4 |
Users maintaining plans and handling associated requests | 10% | 4 |
Users interacting with started requests | 50% | 2 |
Users creating requests, steps, and procedures | 20% | 4 |
Users using other tabs such as the Reports tab | 10% | 4 |
Performance tuning for a high-availability cluster environment
BMC recommends the following settings for an optimal performance in a cluster environment.
For versions 5.0.03.004 and later versions, see:
For versions 5.0.03.003 and earlier versions, see:
- To modify configuration setting for JBoss in the sysctl.conf file
- To update JVM tuning settings
- To modify configuration settings for HornetQ
- To add configuration settings for JBoss in the standalone file
Note: These settings are already added to the standalone file in 5.0.03.004 and later versions.
To modify configuration setting for JBoss in the sysctl.conf file
- On the server where BRPM is installed, go to command prompt and run the cd /etc command to access the /etc folder.
- Run the # cat sysctl.conf command to view the sysctl.conf file.
Specify the recommended values for the following UDP parameters in the sysctl.conf file.
# Allow a 25MB UDP receive buffer for JGroups
net.core.rmem_max = 26214400
# Allow a 1MB UDP send buffer for JGroups
net.core.wmem_max = 1048576The following figure shows the updated values for the UDP parameters.
- To apply this setting, run the sysctl -p command.
To update JVM tuning settings
- Go to RLMhome/bin and open the start.sh file.
Add the following JVM tuning settings to the file:
JAVA_OPTS="$JAVA_OPTS -Xms8g -Xmx16g -XX:MetaspaceSize=512mThe following figure shows the updated JVM settings.
- Save changes and restart the application service.
5.0.03.003 or earlier To modify configuration settings for HornetQ
- Go to RLMhome/releases/RLM/server/jboss/standalone/configuration and open the standalone-ha.xml file.
- In the file, ensure that the following parameters are set with the recommended settings.
Specify the <journal-file-size> as 10 MB.
Example<journal-file-size>10485760</journal-file-size>Specify <journal-min-files> as 6.
Example<journal-min-files>6</journal-min-files>Specify <redelivery-delay> as 10 seconds.
Example<redelivery-delay>100000</redelivery-delay>
- Save changes to the file.
5.0.03.003 or earlier To add configuration settings for JBoss in the standalone file
- Go to RLMhome/server/jboss/standalone/configuration and open the standalone-ha.xml file.
In the file, in the <protocol type="MERGE3"> protocol type, specify the following properties:
<property name="min_interval">20000</property>
<property name="max_interval">100000</property>In the <protocol socket-binding="jgroups-udp-fd" type="FD_SOCK"/> parameter, specify the following properties:
<protocol type="FD">
<property name="timeout">6000</property>
<property name="max_tries">5</property>
</protocol>
<protocol type="VERIFY_SUSPECT">
<property name="timeout">2000</property>In the <protocol socket-binding="jgroups-mping" type="MPING"/> parameter, specify the following properties:
<protocol type="MERGE3">
<property name="min_interval">20000</property>
<property name="max_interval">100000</property>In the <protocol socket-binding="jgroups-tcp-fd" type="FD_SOCK"/> parameter, specify the following properties:
<protocol type="FD">
<property name="timeout">6000</property>
<property name="max_tries">5</property>
</protocol>
<protocol type="VERIFY_SUSPECT">
<property name="timeout">2000</property>- Save changes.