Thread Contention in Transaction Snapshots

To view information about thread contention:

  1. In the transaction snapshot navigation page, look for items labeled asThread Contentionissues in the Potential Issues pane. The time column indicates blocked or wait time.
  2. To display more information about the blocked method, click the thread contention item and select Drill Down into Call Graph. The call graph shows the following information relevant to thread contention:
    • In the Call Graph header, Wait Time and Block Time indicate aggregate measures for the thread in one segment of the business transaction.
    • In the Call Graph header, Node specifies the name of the node hosting the contending threads, PojoNode in the example above.
    • The Time column indicates the total self time for the method.
    • The Percent% column shows the amount of time spent in the method as a percentage of overall time for the thread.
    • The Thread State Column indicates the degree of thread contention issues for the method. Gray means no problems; yellow to red shading signals the severity of contention problems. (When you hover over the bar, a breakdown of the elements that make up the thread state is shown: This includes Block time and Wait time by default. To include Cpu Time in the Thread State detail, Dev mode must be enabled.)

  3. Right-click on any method with a thread state that indicates block or wait times and select View Details. The Thread Contention details pane appears.

    The Thread Contention details pane displays the name of the blocked method in the top left corner and adds the following information in the Thread Contention table:

    ElementMeaning
    Blocking ThreadThe thread holding a lock on the blocking object.
    Blocking ObjectThe object that the blocked thread is waiting to access.
    Block TimeThe amount of time waiting to access the object.
    Line NumberThe line number in the blocked method where the blocking object is being accessed. With respect to the example above, run is attempting to access a locked object at line 114.

    The order in which blocking threads are shown in the table is not significant; it does not imply a call order or time sequence.

Note: In development mode, Splunk AppDynamics reports explicit locks such as java.util.concurrent.locks.ReentrantLock as Wait Time instead of Block Time in the Thread Details Call Graph view. Take this into consideration when monitoring business transactions and analyzing performance related to lock contentions.