Thread Dump Analysis Using Performance Monitoring Toolset
Thread Dump is one of the most common things you perform when encountered with performance issues. For detecting faulty threads degrading your ColdFusion server, a meaningful analysis of thread dump is very useful. Issues such as deadlocks, lock contention and excess CPU utilization by individual thread dumps can be resolved by visualizing the states of individual thread dumps. Maximum throughput from the app can be achieved by rectifying the status of each thread provided by the tool.
In Performance Monitoring Toolset, a thread dump is supported in two ways –
- Auto-triggered : In alert configuration, you can configure the alerts (JVM CPU usage alerts, JVM memory old generation usage alert, etc) to trigger a thread dump or heap dump or invoke GC. When the configured condition is met, all configured actions will be triggered including GC / thread dump/heap dump. For more details please refer to the blog post – [Alerts]
- User-triggered : Once you navigate to Node Detail Page, you see multiple buttons on top that triggers a thread dump, heap dump or Garbage Collection on the node. Clicking on “Thread Dump” will initiate a Thread Dump on the node. The next screen presents a detailed analysis of threads.
When you take a thread dump, you see an overview of all the threads running in the JVM. Thread Dump Overview which has 2 sections –
Thread Count per state :
Total threads in ColdFusion JVM aggregated based on their states like Runnable, Waiting, Blocked, etc.
Clicking on either of these categories takes you to the filtered view which lists threads of that particular state along with their stack trace.
Thread Count per thread group :
Total threads in ColdFusion JVM aggregated based on their thread groups like main, scheduler, system, cfthread, etc.
Clicking on either of these categories takes you to the filtered view which lists threads of that particular thread group along with their stack trace.
It can help you go to the problematic threads in a more quick fashion as compared to looking at thread dump file. For example if you have certain threads blocked on resources you can easily figure it out by just looking at all blocked threads.
Thread Dump History and Thread Dump Export:
All the thread dumps taken are preserved and shown to the user in node detail page, so that you can go back in time and compare multiple thread dumps without even logging in to the node. All thread dumps triggered by the user are shown at one place. Also as marked in blue, there is also an option to export the thread dump as a text file. You can then analyze it offline.