IP Library Granted Patent US 9,077,610
Granted Patent B2
US 9,077,610 · App. 14/071,523 · Granted Jul 7, 2015

Performing call stack sampling

Inventors: Jyoti Bansal (San Francisco, CA); Bhaskar Sunkara (San Francisco, CA)
Assignee: AppDynamics, Inc.
H04L43/04H04L43/022H04L43/045H04L67/22H04L67/02
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,077,610
App. No.
14/071,523
Granted
Jul 7, 2015
Kind
B2
Abstract

The present technology may determine an anomaly in a portion of a distributed business application. Data can automatically be captured and analyzed for the portion of the application associated with the anomaly. By automatically capturing data for just the portion associated with the anomaly, the present technology reduces the resource and time requirements associated with other code-based solutions for monitoring transactions. A method for sampling an application thread to monitor a request may begin with detecting a diagnostic event with respect to the processing of a request. A thread call stack associated with the request may be sampled in response to detecting the diagnostic event. A state of the call stack may be stored with timing information based on the sampling. The call stack state and timing information may be transmitted to a remote server.

Claims (46)

1. A method for sampling an application thread to monitor a request, comprising:

monitoring a request at a server, the request part of a distributed business transaction;

detecting a diagnostic event with respect to the processing of the request;

sampling a thread call stack associated with the request in response to detecting the diagnostic event;

updating a thread snapshot based on a state of the call stack over time with timing information, the state of the call stack retrieved from sampling the thread call stack based on the sampling, the timing information associated with particular call stack state, the snapshot including a hierarchical representation of calls performed during the request and detected by sampling the call stack; and

transmitting the thread snapshot and timing information to a remote server.

2. The method of claim 1 , wherein the diagnostic event includes an anomaly associated with the request.

3. The method of claim 1 , wherein the diagnostic event includes a request by a user to collect diagnostic data.

4. The method of claim 1 , further comprising:

detecting an outgoing call; and

sampling the thread call stack in response to detecting the outgoing call.

5. The method of claim 1 , wherein the outgoing call is detected by bytecode instrumentation.

6. The method of claim 1 , wherein the outgoing call is detected by code embedded into exit points within an application which makes the outgoing call.

7. The method of claim 1 , wherein the thread sampling rate is adjusted after a set period of time.

8. The method of claim 7 , wherein the sampling rate is adjusted based on the sampling results.

9. The method of claim 1 , wherein the sampling results in a plurality of stored call stack states that indicate one or more methods that are called at different times as part of handling the request.

10. The method of claim 9 , wherein a call graph of functions executed by an application thread is derived from the sampled call stack states.

11. A non-transitory computer readable storage medium having embodied thereon a program, the program being executable by a processor to perform a method for sampling an application thread to monitor a request, the method comprising:

monitoring a request at a server, the request part of a distributed business transaction;

detecting a diagnostic event with respect to the processing of the request;

sampling a thread call stack associated with the request in response to detecting the diagnostic event;

updating a thread snapshot based on a state of the call stack over time with timing information, the state of the call stack retrieved from sampling the thread call stack based on the sampling, the timing information associated with particular call stack state the snapshot including a hierarchical representation of calls performed during the request and detected by sampling the call stack; and

transmitting the thread snapshot and timing information to a remote server.

12. The non-transitory computer readable storage medium of claim 11 , wherein the diagnostic event includes an anomaly associated with the request.

13. The non-transitory computer readable storage medium of claim 11 , wherein the diagnostic event includes a request by a user to collect diagnostic data.

14. The non-transitory computer readable storage medium of claim 11 , the method further comprising:

detecting an outgoing call; and

sampling the thread call stack in response to detecting the outgoing call.

15. The non-transitory computer readable storage medium of claim 11 , wherein the outgoing call is detected by bytecode instrumentation.

16. The non-transitory computer readable storage medium of claim 11 , wherein the outgoing call is detected by code embedded into exit points within an application which makes the outgoing call.

17. The non-transitory computer readable storage medium of claim 11 , wherein the thread sampling rate is adjusted after a set period of time.

18. The non-transitory computer readable storage medium of claim 17 , wherein the sampling rate is adjusted based on the sampling results.

19. The non-transitory computer readable storage medium of claim 11 , wherein the sampling results in a plurality of stored call stack states that indicate one or more methods that are called at different times as part of the handling the request.

20. The non-transitory computer readable storage medium of claim 19 , wherein a call graph of functions executed by an application thread is derived from the sampled call stack states.

21. A system for monitoring a business transaction, comprising:

a first application server having memory; and

one or more modules stored in memory of the first application server and executable by a processor to monitor a request at a server, the request part of a distributed business transaction, detect a diagnostic event with respect to the processing of the request, sample thread call stack associated with the request in response to detecting the diagnostic event, update a thread snapshot based on a state of the call stack over time with timing information, the state of the call stack retrieved from sampling the thread call stack based on the sampling, the timing information associated with particular call stack state, the snapshot including a hierarchical representation of calls performed during the request and detected by sampling the call stack, and transmit the thread snapshot and timing information to a remote server.

22. The system of claim 21 , wherein the diagnostic event includes an anomaly associated with the request.

23. The system of claim 21 , wherein the diagnostic event includes a request by a user to collect diagnostic data.

24. The system of claim 21 , the modules further executable to detect an outgoing call and sample the thread call stack in response to detecting the outgoing call.

25. The system of claim 21 , wherein the outgoing call is detected by bytecode instrumentation.

26. The system of claim 21 , wherein the outgoing call is detected by code embedded into exit points within an application which makes the outgoing call.

27. The system of claim 21 , wherein the thread sampling rate is adjusted after a set period of time.

28. The method of claim 27 , wherein the sampling rate is adjusted based on the sampling results.

29. The system of claim 21 , wherein the sampling results in a plurality of stored call stack states that indicate one or more methods that are called at different times as part of handling the request.

30. The method of claim 29 , wherein a call graph of functions executed by an application thread is derived from the sampled call stack states.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2017
From: APPDYNAMICS LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 044173/0050 →
CHANGE OF NAME Recorded Jun 23, 2017
From: APPDYNAMICS, INC.
To: APPDYNAMICS LLC
Reel/Frame 042964/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2013
From: BANSAL, JYOTI; SUNKARA, BHASKAR
To: APPDYNAMICS, INC.
Reel/Frame 031608/0649 →
Continuity (4)
Continuation 13189360 · Jul 22, 2011
Continuation In Part 12878919 · Sep 9, 2010
Provisional Application 61241256 · Sep 10, 2009
Related Publication 20140068068A1 · Mar 6, 2014