Skip to end of metadata
Go to start of metadata

Sizing Considerations

The number of platforms the Hyperic Server can manage depends on the hardware it runs on, the number of Hyperic Agents reporting to the server, the volume of metrics that are collected, and the size of the Hyperic database.  

As a general rule, assume a minimal system configuration will support at least 25 Agents or more. On a high performance platform, a properly tuned Hyperic server can support from 100's to 1000's of agents.  

This page has instructions for tuning Hyperic for large environments.

Note: See Installation Requirements for Hyperic Server system requirements.

Increasing Java Heap and Changing GC Settings

Heap size startup options are set in the ServerHome/conf/hq-server.conf file using the server.java.opts property. Default settings are described in server.java.opts.

How much you can increase the default heap options depends on the amount of RAM on the Hyperic Server host. Given sufficient RAM, you could use these settings:

If you increase heap size, you may need to change JMS memory settings as well. For more information, see the Increase JMS Memory below.

Note: If you are running Hyperic Server on a 64-bit system with 4GB (4096 MB) or less memory, Hyperic recommends you use 32-bit JVM. A 64-bit JVM is not recommended unless you have more memory. You might need twice as much heap on a 64-bit system as on a 32-bit system to achieve the same performance.

Increase JMS Memory

The JMS memory settings are configured using server.jms.highmemory and server.jms.maxmemory in ServerHome/conf/hq-server.conf, by default, 350MB and 400MB, respectively.

The values for server.jms.highmemory and server.jms.maxmemory should be 80% and 90% of the Java heap size, respectively. Erratic alert behavior or missed alerts may indicate the settings are too low.

Increase the Number Connections to Database

The size of the connection pool for communication between Hyperic Server and the database is configured with server.database-minpoolsize and server.database-maxpoolsize in ServerHome/conf/hq-server.conf, by default, 5 and 100, respectively.

In large environments, it may be appropriate to increase the size of the connection pool. If you are managing between 800 and 1500 platforms, set both server.database-minpoolsize and server.database-maxpoolsize to 300.

Given properly configured caches, it should not be necessary to increase connection pool size to more than 700.

Note: If you increase server.database-minpoolsize to 100 or more, set server.database-maxpoolsize equal to that value.

Configure Hyperic Cache Settings for Improved Performance

The default cache settings in Hyperic are suitable for most deployments. However, depending on your deployment and use of Hyperic, especially in large environments, changing the cache settings might improve performance.

Where Are Caches Kept

All internal caches are kept in EHCache and are accessible via the "HQ Health" screen. EHCache provides:

  • Automatic integration with Hibernate
  • Optional distributed caching when running in a cluster.
  • A variety of proven, well-tested eviction algorithms
  • Better cache management and configuration

Default Cache Settings

By default, the cache settings in Hyperic are set for a medium to large deployment:

  • 100 Platforms
  • 500 Servers
  • 5000 Services

These settings should suffice for most deployments.

Monitoring Caches to Identify Areas for Improvement

You can monitor Hyperic's internal caches through the server.log or via the "HQ Health" screen. The log contains diagnostic information, which is written to the log periodically. The cache information should look like:

This listing shows each cache, its size, and its hit counts. At the end of the listing there is a summary for the total size of all Hyperic caches.

If a cache has an unusually high miss rate or becomes full, you can manually configure it to improve performance. For example, consider this cache:

The cache has 10,000 elements. With only 6766 hits and 25,772 misses, the hit ratio is around 20-25%. Ideally the number of misses should peak at about the maximum size of the cache. (There are some exceptions to this: the UpdateTimestampsCache and the PermissionCache have items invalidated from the cache frequently, so these rules do not apply.) So, increasing this cache's size would probably improve Hyperic performance.

Changing Caches Settings

After you identify a cache whose configuration should be changed, you can change its configuration in the file server-n.n.n-EE\hq-engine\hq-server\webapps\ROOT\WEB-INF\classes\ehcache.xml. In general, only the cache sizes should need to be changed.

To continue with the example cache from above, the entry for the cache in this file looks like this:

You may need to iterate on the cache size to find the optimal setting.

The format of this file is described in EHCache's documentation.

Configuring Permission Cache for Improved Performance

The PermissionCache can be changed to improve performance. This cache caches recently evaluated permission checks:

This cache is set to expire the checks after 60 seconds. In an environment where the user and role definitions are not updated frequently, you can increase the timeToLiveSeconds value to effect a significant performance increase.

While the right value for timeToLiveSeconds depends on the environment, the rule of thumb is that it should be set no higher than the acceptable time for a permission-related operation to take effect. Perhaps this is even zero, but that can be costly because the Server needs to go to the database to check permission on every resource the user views.

Labels:
None
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.