Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zcong1993/node-pprof
NodeJS profiling cpu or take a heap snapshot like go tool pprof.
https://github.com/zcong1993/node-pprof
Last synced: about 23 hours ago
JSON representation
NodeJS profiling cpu or take a heap snapshot like go tool pprof.
- Host: GitHub
- URL: https://github.com/zcong1993/node-pprof
- Owner: zcong1993
- License: mit
- Created: 2021-08-25T07:42:19.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2021-09-16T03:53:26.000Z (about 3 years ago)
- Last Synced: 2024-10-05T03:28:48.036Z (about 1 month ago)
- Language: TypeScript
- Homepage:
- Size: 68.4 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# node-pprof
[![NPM version](https://img.shields.io/npm/v/@zcong/node-pprof.svg?style=flat)](https://npmjs.com/package/@zcong/node-pprof)
[![NPM downloads](https://img.shields.io/npm/dm/@zcong/node-pprof.svg?style=flat)](https://npmjs.com/package/@zcong/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
```bash
$ 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)
```bash
export PPROF_PORT=9393 # tiny http server port, default 9393
export PPROF_MAX_SECONDS=60 # maxCpuProfileSeconds, default 60node -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
```js
// your-server.js
const { createPprofServer } = require('@zcong/node-pprof')
createPprofServer(9393, 60)// your code
```## License
MIT © zcong1993