I am experiencing a performance issue with one instance of Ignition. The indications of the issue are pretty obvious when using the tools provided with Ignition. The first clue is the log entries that appear frequently in the log indicating “pause-the-world” detected. Another clue is the level of heap memory that is being consumed and apparently not being released. Of the 2048 max defined we are using nearly all of it. The typical saw tooth use/recovery pattern seen in most instances doesn’t seem to be present. On the Ignition Gateway performance display i frequently see CPU utilization in the 85 - 95 % range and then returning to normal levels around 2%. During the high CPU utilization periods the Windows Task Manager show Java.exe as the primary CPU consumer. How can I narrow the search for what specifically is consuming the heap and what exactly is consuming the CPU?
I’ve used a jmap histogram to identify troublesome class allocations. It’s pretty raw, but problems usually stick out like sore thumbs. This topic at StackOverflow discusses some of the tools and techniques:
Also, if you aren’t using G1GC, switch before doing anything else.
Silly question but, how do you get jmap installed? This instance of Ignition is running on a Windows Server 2012 R2 VM.
It’s part of the JDK.
1 Like