0.1.3 • Published 3 years ago

@zcong/node-pprof v0.1.3

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

node-pprof

NPM version NPM downloads

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