> For the complete documentation index, see [llms.txt](https://shoppinpal.gitbook.io/docs-shoppinpal-com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shoppinpal.gitbook.io/docs-shoppinpal-com/appendix/nodejs-profiling.md).

# NodeJS Profiling

## Best NodeJS Versions for profiling

If possible, do yourself a favor and test your code to make sure it works with NodeJS version 6.3 or greater.

* Official [support](https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27) for Node.js debuggability landed in Node.js version 6.3 in May 2016.
* Before v6.3: <https://github.com/node-inspector/node-inspector>

## Profiling

### Memory

1. expose port 9229 if using docker
2. and start your code: `node --inspect --debug-brk myCode.js`
   1. it will output a url to connect with `chrome://inspect/#devices`, go ahead and copy/paste that URL into chrome
3. under the `sources`tab, place breakpoints where ever you want ... then hit play to let the code run
   * Your code starts in "paused" mode because of `--debug-brk`
4. take a snapshot, then:
   1. either, run requests against web server to cause load
   2. or, simply let your one-time nodejs code run until it hits a breakpoint
5. take another snapshot
6. compare heap snapshots in chrome devtools
