3.6. Server Tuning for Large Numbers of Agents

When the JBoss ON server has a large number of agents in its inventory (depending on resource counts and configuration like monitoring schedules, this can be as few as 100 or over 1,000 agents), the default settings may not allow it to do an upgrade. The size of the data is enough that the server cannot load all of it cleanly.
While less likely, there could be similar performance issues during regular operation.
One of the most apparent symptoms is frequent timeouts for agent requests.
The problem is not memory related; rather, it is a threading problem. The number of agent requests overwhelms the JBoss ON server, which slows overall process.
There are three parts of the server configuration which can be adjusted to improve performance: increasing the storage node memory settings; increasing the EJB pool; and resetting the concurrency limits to increase the number of allowed agent connections.
  1. Increase the default size of the storage node memory usage. This is only necessary for a large number of nodes, around 1,000 or more.
    This setting is found in the storage node administration UI. To change the storage node's JVM heap size, enter a new value into the and click the Save button. The configuration change will be applied on disk and then the storage node be restarted so that the change takes effect.

    Figure 3.1. Storage node configuration settings

    Storage node configuration settings
  2. Increase the EJB pool.
    1. Open the server's standalone-full.xml profile.
      [root@server ~]# vim /opt/jon/jon-server-3.3.0.GA/jbossas/standalone/configuration/standalone-full.xml
    2. Change the strict-max-pool key to increase the pool size. The default is 20. For example:
      <strict-max-pool name="slsb-strict-max-pool" max-pool-size="2000" instance-acquisition-timeout="1" instance-acquisition-timeout-unit="MINUTES"/>
      Note
      If this option is chosen, and the standalone-full.xml file is modified, administrators will need to maintain it outside of the JON upgrade process. Patches and updates will revert the file to its default configuration.
  3. Increase the concurrency limits to increase how many agents can communicate with the server simultaneously.
    1. Open the rhq-server.properties file.
      [root@server ~]# vim serverRoot/jon-server-3.3.0.GA/bin/rhq-server.properties
    2. There is a block of communication-related parameters. Concurrency limits are set in the concurrency-limit parameters and the rhq.communications.global-concurrency-limit parameter. There are other communication limits for web UI connections and downloads. The different communication parameters are covered in Section 6.3.3, “Setting Concurrency Limits”.
      For example:
      rhq.server.startup.web.max-connections=1000
      rhq.server.agent-downloads-limit=45
      rhq.server.client-downloads-limit=5
      rhq.communications.global-concurrency-limit=200
      rhq.server.concurrency-limit.inventory-report=25
      rhq.server.concurrency-limit.availability-report=25
      rhq.server.concurrency-limit.inventory-sync=25
      rhq.server.concurrency-limit.content-report=25
      rhq.server.concurrency-limit.content-download=25
      rhq.server.concurrency-limit.measurement-report=25
      rhq.server.concurrency-limit.measurement-schedule-request=25
      rhq.server.concurrency-limit.configuration-update=25
  4. Restart the server to load the new settings.
    [root@server ~]# serverRoot/jon-server-3.3.0.GA/bin/rhqctl restart --server
Note
The server will not use the new configuration until it is restarted.