Mastering Thread and Heap Dumps in ThingWorx Composer

In the fast-paced world of IoT and industrial innovation, ensuring optimal performance of your ThingWorx platform is paramount. As a ThingWorx expert solution architect, I’m here to guide you through the crucial process of generating thread and heap dumps using the SupportSubsystem method, applicable for ThingWorx versions 9.0 to 9.5.

Why Thread and Heap Dumps Matter

Thread and heap dumps are essential diagnostic tools. They capture the state of all threads and the memory heap, allowing you to identify performance bottlenecks, memory leaks, or other runtime issues that might be affecting your ThingWorx applications. By diagnosing these problems efficiently, you can maintain the agility and reliability of your IoT solutions.

Collecting Thread Dumps

Using the SupportSubsystem

The SupportSubsystem introduced in ThingWorx 9.0 provides a robust way to collect thread dumps. Here’s how you can leverage it:

  1. Manually Triggering a Thread Dump:
    • If ThingWorx Composer is responsive, navigate to the SupportSubsystem.
    • Use the DumpAllThreads service to manually generate a thread dump.
    • Note: This method captures a single snapshot of the thread state. To observe trends, trigger the service multiple times, especially during periods of poor performance.
  2. Automatic Collection with the Watchdog Process:
    • Even when Composer is unresponsive, thread dumps can be collected every 30 seconds by leveraging a watchdog process.
    • Create a file named runstacktrace in the /ThingWorxStorage/repository/SupportRepository directory.
    • The watchdog will detect this file and generate thread dumps until you remove it.
    • Pro Tip: Ensure existing stacktrace files are moved or deleted to prevent appending new data to an old file.

Collecting Heap Dumps

Using the SupportSubsystem

Heap dumps provide a snapshot of the memory heap, crucial for spotting memory-related issues:

  1. Generating a Heap Dump:
    • Ensure the Enable Heap Dumps property is activated in the SupportSubsystem’s configuration settings.
    • Trigger the DumpHeap() or DumpHeapAndAllThreads() service. This writes the heap dump to the SupportRepository.
    • Be patient: Depending on your heap size, this process may take time.

Best Practices

  • Always collect several thread dumps before proceeding with a heap dump. This combination can offer deeper insights into underlying issues.
  • Regular monitoring and diagnostics using these dumps can significantly enhance the uptime and efficiency of your ThingWorx environment.

Final Thoughts

Thread and heap dumps are powerful tools in your diagnostic arsenal. By mastering these techniques via the SupportSubsystem, you’ll be well-equipped to tackle performance issues head-on, ensuring your ThingWorx applications remain robust and reliable. For further enhancement, consider utilizing PTC’s Sammy Desktop tool for GUI-based processing of these dumps.

Stay ahead in IoT innovation by keeping your ThingWorx platform at peak performance, and feel free to reach out with your questions or experiences in the comments below. Happy troubleshooting!

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top