In the call graph, I get a large execution time (e.g. 4.2 seconds at the top tab, but a smaller execution time (e.g. 1.3 s) at the top left by "execution time". Why this massive difference? This is the case for all my traces and I don't think they are partial ones.
Where is this extra time being spent?
(I am running Parse Server on Heroku, and have App Dynamics as an add-on)
Hi Jane,
Can you please confirm is this hotspot snapshot, if Hotspot (setting under Configure -> Instrumentation -> call graph settings ->"Enable aggressive slow snapshot collection" checkbox setting is enabled?) snapshots we will collect performance causing API in call graph.
Can you please provide screenshots from controller UI with snapshot issue in view? and another screenshot with hotspot settings in view as well
> Can you please confirm is this hotspot snapshot, if Hotspot (setting under Configure -> Instrumentation -> call graph settings ->"Enable aggressive slow snapshot collection" checkbox setting is enabled?
Unclear. The option is available for Java (where it is ticked) but not for node.js - and I'm running Parse Server (node.js middleware) on Heroku via an add-on.
>Can you please provide screenshots from controller UI with snapshot issue in view? and another screenshot with hotspot settings in view as well
Will attach. I'll show a list of transactions and then drill down into the Job one at the bottom, When you see that call graph, the time in the tab is 1,585 ms, but the execution time given (below call graph in blue) is 614 ms.
Hi - I've provided the data - any response? I'd have thought this is a fairly simple question - what do those two numbers denote?
OK, I've found the answer myself.
When the Node.js agent captures a complete call graph, the call graph tab of the transaction snapshot displays the total execution total time of the transaction, including wait times, at the top the call graph.
The execution time shown in the call graph pane is the sum of the times of the individual method calls inside the call graph. This value may be less than the total execution time because it does not include wait times between calls.
As a backend newbie, I have not idea what these wait times between calls might be? Database? Where this call graph has made an async call and node.js runs another thread?
And what do I do to reduce the total transaction time where most of the time is spent "waiting"?
Would love some support from AppDynamics please. TBH although I had issues with New Relic, I ended up much happier with them as they really engage on the support front. Here I didn't get an answer to a simple question that's even mentioned in your documentation.
Hi Jane,
Apologise for delay in response, i am not from Node.js and i am from java, i have difficulty in pointing our "wait" time you are referring in your post in any of the three screenshots you have shared.
In general, we do show wait time(ms) (not object.wait call) but this represents cpu or i/o wait time, see if this is the case in your case.
It is not clear from screenshot is there any further call graph , you can export call graph text completely using "export" option and attach to this, if query is specific to controller i will try to clarify at my earliest