goal
I'm trying to gather resources and tools that make it easier to profile Node.js apps ideally by integrating with Chrome Dev tools and chrome://tracing.
what I found so far
Documentation of tools to analyse the data has been started here but the integration part with Node.js is still missing.
I tried to gather some free and open source tools that try to make this easier and would love to get some feedback and/or further tool suggestions. Pointers to any resources that document anything related are also greatly appreciated.
tools
| Name |
In app initialization |
Instrumentation |
Description |
| memwatch |
Yes |
No |
Leak detection and heap usage and diffing. |
| heapdump |
Yes |
No |
Make a dump of the V8 heap for later inspection |
| profiler |
Yes |
Resume/Pause |
Access the V8 profiler from node.js DEPRECATED |
| v8-profiler |
Yes |
Start/Stop |
Provides node bindings for the v8 profiler and integration with node-inspector |
| node-gc |
Yes |
Handle Events |
Emits events from the V8 garbage collector to let you know when garbage collection occurs |
| gc-stats |
Yes |
Handle Events |
Emits GC stats events after GC occurred |
| webkit-devtools-agent |
Yes |
No |
Implementation of Chrome developer tools protocol. Only the heap and CPU profilers are working right now. |
| trace-viewer |
Yes |
Yes |
JavaScript frontend for Chrome about:tracing and Android systrace. It provides rich analysis and visualization capabilities for trace files, supporting both the linux kernel trace format and Chrome's base/trace_event |
| tracing-framework |
No |
Yes |
A set of libraries, tools, and visualizers for the tracing and investigation of complex web applications. It helps discover performance problems, track regressions, and build buttery-smooth 60fps web apps. |
| irhydra |
No |
No |
Tool that can display intermediate representations used by V8 and Dart VM optimizing compilers |
| cpu-profiler |
Yes |
Start/Stop |
Node bindings for the v8 cpu profiler |
| chrome-cpu-profiler |
Yes |
Start/Stop |
Allows viewing top down, bottom up and callgraphs of a node app in Google Chrome |
| perf-cpuprofile |
No |
No |
Converts linux perf tool output to .cpuprofile files readable by chromiums devtools |
webkit-devtools-agent looks very promising, but doesn't show flamegraphs and has no time line support.
techniques
With a version of node that has a --log-timer-events as part of v8-options, run the app in profiling mode and load the resulting v8.log into Chrome at chrome://tracing.
Check for supported flag:
➝ node --v8-options | grep log_timer_events
--log_timer_events (Time events including external callbacks.)
Profile app to generate v8.log including GC events.
node --prof --track_gc_object_stats --trace_gc_verbose --log_timer_events app.js
Loading into chrome://tracing will yield a flame chart similar to the below:

A detailed explanation is outlined in creating v8 profiling timeline plots although some of the information seems a bit outdated.
what I'm interested in
The idea is to find a way to use the built in Chrome tools to profile Node.js apps the same way as is currently possible
for JavaScript apps running in the browser.
Interesting metrics to gather:
Additionally integration with chrome://tracing by passing flags like --log_timer_events are of interest.
Both, CLI and GUI support would be nice to have as well as real-time and historical data.
goal
I'm trying to gather resources and tools that make it easier to profile Node.js apps ideally by integrating with Chrome Dev tools and
chrome://tracing.what I found so far
Documentation of tools to analyse the data has been started here but the integration part with Node.js is still missing.
I tried to gather some free and open source tools that try to make this easier and would love to get some feedback and/or further tool suggestions. Pointers to any resources that document anything related are also greatly appreciated.
tools
base/trace_eventperftool output to .cpuprofile files readable by chromiums devtoolswebkit-devtools-agent looks very promising, but doesn't show flamegraphs and has no time line support.
techniques
With a version of node that has a
--log-timer-eventsas part ofv8-options, run the app in profiling mode and load the resultingv8.loginto Chrome at chrome://tracing.Check for supported flag:
➝ node --v8-options | grep log_timer_events --log_timer_events (Time events including external callbacks.)Profile app to generate
v8.logincluding GC events.Loading into chrome://tracing will yield a flame chart similar to the below:
A detailed explanation is outlined in creating v8 profiling timeline plots although some of the information seems a bit outdated.
what I'm interested in
The idea is to find a way to use the built in Chrome tools to profile Node.js apps the same way as is currently possible
for JavaScript apps running in the browser.
Interesting metrics to gather:
Additionally integration with
chrome://tracingby passing flags like--log_timer_eventsare of interest.Both, CLI and GUI support would be nice to have as well as real-time and historical data.