@zcong/node-pprof
v0.1.3
Published
my cool project
Downloads
2
Readme
node-pprof
profiling cpu or take a heap snapshot like go tool pprof
Why
Although node --inspect
works well enough, but in real world memory leaks or cpu burst happen in production, it's not easy to use node --inpect in a production machine or pod, and it's difficult to simulate real production traffic locally.
Install
$ yarn add @zcong/node-pprof -D
# or npm
$ npm i @zcong/node-pprof -D
Usage
NOTE A profiler needs to use CPU to work and it collects data into memory. The longer you let it run and the more CPU / memory it will need. This is why you should begin with very short CPU profiling, no more than a few seconds between the start and stop command. So we use a parameter to limit the maximum cpu profile time(aka maxCpuProfileSeconds).
NOTE2 This package will not work when you use ts-node
.
Register (Recommend)
export PPROF_PORT=9393 # tiny http server port, default 9393
export PPROF_MAX_SECONDS=60 # maxCpuProfileSeconds, default 60
node -r @zcong/node-pprof/register ./your-server.js
# profiling cpu
curl 'localhost:9393/profile?seconds=30'
# {"filename":"1629883324898-68.cpuprofile"}
# take a heap snapshot
curl 'localhost:9393/heap'
# {"filename":"1629883486011-44.heapsnapshot"}
Programmatic
// your-server.js
const { createPprofServer } = require('@zcong/node-pprof')
createPprofServer(9393, 60)
// your code
License
MIT © zcong1993