I’ve Forgotten Why I’m Out of Memory: JVM Settings for Foglight

As you might suspect, I had difficulty coming up with a witty title for this blog. However, I rather enjoy people rolling their eyes when I make bad jokes. Given the topic is about memory settings for Foglight’s Management Server (FMS) and Foglight’s Agent Manager (FGLAM) JVMs, maybe we’ll all forget my failed attempts at humor.

Foglight is our Performance Monitoring platform. Foglight utilizes cartridges that provide the agents that are gathering data, the rules that are used to process alarms, and the dashboards that are responsible for displaying the data gathered by the agents. There are cartridges for nearly every aspect of the entire application stack (virtualization, Active Directory, Exchange, storage, etc.). Database cartridges exist for the following database platforms:  SQL Server, Oracle, DB2 LUW, Sybase ASE, SQL Azure, MySQL, PostgreSQL, and MongoDB. The MySQL, PostgreSQL, and MongoDB cartridges are provided by our partners at Systems Management Associates. The focus of this blog are settings for the Oracle, SQL Server, DB2 LUW, and Sybase ASE cartridges.

I’d like to avoid a lengthy conversation about Foglight’s distributed architecture. You can learn a bit more about Monitoring Different Windows Domains with Foglight for SQL Server in my previous blog. As you might suspect, both the Foglight Management Server (FMS) and the Foglight Agent Manager (FGLAM) need memory, CPU, and disk space. In addition to these requirements, the JVMs on both the FMS and FGLAM machines need to have specific values. The requirements for these components can be found in the Foglight Deployment Guide. At the time of the writing of this blog, here is the deployment guide for the SQL Server cartridge. It’s important to know that the requirements listed are relevant to the Oracle, SQL Server, DB2 LUW, and Sybase ASE cartridges. You'll want to browse all of Foglight’s documentation.

The areas we’ll talk about are in the below sections within the deployment guide:

SQL PI refers to SQL Performance Investigator. SQL PI provides a very granular breakdown of your database workloads. There are different requirements depending upon whether this feature is enabled (you should try it. We think you’ll really like it!).

Pay particular attention to the JVM settings listed:

The row labeled “Number of Agents”, refers to the number of database agents within your deployment. The JVM settings row, that matches your number of database agents, is the value that needs to be entered into the configuration files of the Foglight Management Server and Foglight Agent Manager machines. These files are referenced in the section labeled, “Manual configuration required by all users”, within the deployment guide:

The deployment guide provides examples of JVM settings. In the below screenshot, we see that 4096MB is the setting for the Foglight Management Server and 2048MB is the setting for the Foglight Agent Manager. You should use the JVM values that match your number of database agents.

Here's an example of what the FMS server.config file might look like after the changes:


Stop the FMS and FGLAM services and make your changes. Once you’ve made the changes, restart both the Foglight Agent Manager and Foglight Management Server services and your new JVM memory settings are in place.

Things to remember:

  • Pay attention to the syntax documented for the JVM settings. Incorrect syntax can prevent the FMS and FGLAM services from starting. I’ve seen it. It’s not pretty.
  • Smaller deployments (few database agents) may not require adjustments to the JVM settings. If you start receiving errors such as “server out of memory”, when deploying database agents, you should consider adjusting the JVM settings.

Don’t forget that you can always download a trial of Foglight for Databases from our product page.