9.0 Tuning the Performance of the Applications

Identity Applications rely on diverse technologies with many interactions.

This section discusses common aspects that can enable you to optimally tune the performance of provisioning components and Tomcat application server. You can use this information as a reference for starting your performance tuning. For a good understanding of potential areas where tuning can improve performance, monitor your application usage patterns, loads, and hardware specifications, and then track specific performance issues.

Several tools are available on the Internet to monitor Java applications. Standard Java JDK comes with two graphical user interface-based monitoring tools: JConsole and VisualVM. These tools are free and easy to install. VisualVM provides advanced monitoring features than JConsole. VisualVM enables to analyze the thread execution and profile CPU and memory usage of the JVM requests. For more information about these tools, see JDK Tools. The following are a few Linux-based examples of monitoring local applications that are running on the same system as VisualVM and remote applications that are running on other systems:

Monitoring a local application

Use the process ID (PID) to monitor applications that are running locally that VisualVM can connect to.

Monitoring a remote application

You can monitor CPU usage, heap usage, threads, memory, and classes on applications running on other systems.

Perform the following actions to set up a connection with the remote system:

  1. Add the following system properties to the CATALINA_OPTS entry of the setenv.sh file in the /tomcat/bin/ directory:

    -Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port=<Monitoring_Port>
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
  2. Launch JVisualVM from <JAVA_HOME>/bin/jvisualvm.

  3. Add the remote host by using the port configured and add the JMX connection.

JVisualVM is composed of four tabs: Overview, Monitor, Threads, and Sampler. The below figure shows the Memory tab that provides information about memory consumption and memory pools.

NOTE:The focus of the section is tuning and not troubleshooting. Effective troubleshooting involves identifying the clues and root cause of the problem, and then making corrections. You must first attempt to troubleshoot the problem before thinking about tuning. For more information about troubleshooting, Section 43.0, Troubleshooting.