Performance tuning

This topic provides recommendations for tuning the deployment of BMC Release Process Management for optimal performance.

Recommended configurations

Use the following configurations for optimal performance of the product:

  • In RLMhome\releases\productVersion\BRPM\config\torquebox.yml, ensure that the following parameters are set:

    ...
    messaging:
      /queues/backgroundable/automation:
        AutomationHandler:
          concurrency: 3
  • In RLMhome\releases\productVersion\BRPM\config\database.yml, ensure that the following parameters are set:

    production: 
      ...
    
      pool: 10 # NOTE: Increase the connection pool size
      wait_timeout: 10
      cursor_sharing: EXACT

    Note

    By default, the cursor_sharing value is set as FORCE. This overrides any configuration set on the database at the system level. Specify the value for cursor_sharing as EXACT to avoid performance issues.

  • In RLMhome\releases\productVersion\BRPM\config\automation_settings.rb, ensure that the following automation parameters are set:

    ...
    $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.

  • For Windows, in RLMhome\bin\start.bat, ensure that the following application parameters are set:

    ...
    set JAVA_OPTS="%JAVA_OPTS% -Xms1024m -Xmx4096m -XX:+CMSClassUnloadingEnabled"
    ...
  • For Linux, in RLMhome\bin\start.sh, ensure that the following application parameters are set:

    ...
    export JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx4096m -XX:+CMSClassUnloadingEnabled"
    ...
  • For Solaris, in RLMhome\bin\start.sh, ensure that the following application parameters are set:

    ...
    JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx4096m -XX:+CMSClassUnloadingEnabled"
    ...
    

Notes

Back to top

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
Values

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.

Back to top

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 Performance tuning.

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 RLMhome\releases\productVersion\RPM\config\torquebox.yml file
  • Xmx(AUTOMATION_JAVA_OPTS)—The maximum size of the memory allocation pool for automation defined in the RLMhome\releases\productVersion\RPM\config\automation_settings.rb file

Example

  1. If you have the following parameters set in your Linux environment:
    • JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx4096m -XX:+CMSClassUnloadingEnabled"
    • concurrency: 3
    • $AUTOMATION_JAVA_OPTS = "Xmx128m -Xms32m -Xss2048k"
    Memory = 1.5 × 4096 + 3 × 128 = 6528 MB ≈ 7 GB
  2. If you have the following parameters set in your Linux environment:
    • JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx8192m -XX:+CMSClassUnloadingEnabled"
    • concurrency: 0
    • $AUTOMATION_JAVA_OPTS = "-Xmx128m -Xms32m -Xss2048k"
    Memory = 1.5 × 8192 + 0 × 128 = 12288 MB ≈ 13 GB


To calculate the recommended physical memory size

Memory 2 × Xmx(JAVA_OPTS) + concurrency × Xmx(AUTOMATION_JAVA_OPTS)

Example

If you have the following parameters set in your Linux environment:

  • JAVA_OPTS="$JAVA_OPTS -Xms6144m -Xmx6144m -XX:+CMSClassUnloadingEnabled"
  • concurrency: 10
  • $AUTOMATION_JAVA_OPTS = "-Xmx512m -Xms32m -Xss2048k"

Memory = 2 × 6144 + 10 × 512 = 17408 MB ≈ 18 GB

Back to top

Recommended deployment

The following table provides information about a recommended deployment scenario.

Note

This deployment can sustain a load of 60 concurrent users in case of a High Availability (HA) environment and 30 concurrent users in case of a Non-High Availability (Non HA) environment.

Deployment scenario

Scenarios

Percentage of total concurrent users

Transaction rate 
(per user, per hour)

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. 

To modify configuration settings for HornetQ

  1. Go to /#RPM install path#/RLM/server/jboss/standalone/configuration and open the standalone-ha.xml file. 
  2. In the standalone-ha.xml file, ensure that the following parameters are set with the recommended settings:
    1. Specify the <journal-file-size> as 10 MB. 

      Example
      <journal-file-size>10485760</journal-file-size>
    2. Specify <journal-min-files> as 6.

      Example
      <journal-min-files>6</journal-min-files>
    3. Specify <redelivery-delay> as 10 seconds.

      Example
      <redelivery-delay>100000</redelivery-delay>
  3. Save changes to the file. 

To modify configuration setting for JBoss in the sysctl.conf file

  1. On the server where BRPM is installed, go to command prompt and run the cd /etc command to access the /etc folder. 
  2. Run the # cat sysctl.conf command to view the sysctl.conf file.

  3. 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 = 1048576

    The following figure shows the updated values for the UDP parameters.

  4. To apply this setting, run the sysctl -p command.

To add configuration settings for JBoss in the standalone-ha.xml file

  1. Go to /#RPM install path#/RLM/server/jboss/standalone/configuration and open the standalone-ha.xml file. 
  2. In the standalone-ha.xml file, in the <protocol type="MERGE3"> protocol type, specify the following properties:

    <property name="min_interval">20000</property>
    <property name="max_interval">100000</property>
  3. 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>
  4. 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>
  5. 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>
  6. Save changes. 

To update JVM tuning settings

  1. Go to /#RPM install path#/RLM/bin and open the startup.sh file.
  2. Add the following JVM tuning settings to the file:

    JAVA_OPTS="$JAVA_OPTS -Xms8g -Xmx16g -XX:MetaspaceSize=512m

    The following figure shows the updated JVM settings.

  3. Save changes and restart the application service.

Back to top


Was this page helpful? Yes No Submitting... Thank you

Comments

  1. Marcel Drechsler

    Is the concurrency parameter in the torquebox configuration actually a global value or per request? I'm asking because we're experiencing sometimes delays by minutes for a step to run.

    Mar 20, 2019 08:12
    1. Shweta Hardikar

      Hi Marcel,

      Let me check with the SMEs and get back to you.

      Yes, I checked, it's a global value. 

      Mar 21, 2019 12:17