Security News
ESLint is Now Language-Agnostic: Linting JSON, Markdown, and Beyond
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
pprof support for Node.js.
Your application will need to be using Node.js 8.9.4 or greater, or Node.js 10.4.1 or greater. The profiler will not be enabled when using earlier versions of Node 8 and 10 because the profiler is not stable with those versions of Node.js.
The pprof
module has a native component that is used to collect profiles
with v8's CPU and Heap profilers. You may need to install additional
dependencies to build this module.
pprof
has prebuilt binaries available for Linux and Alpine
Linux for Node 8, 10, and 11. No additional dependencies are required.@google-cloud/profiler
on environments
that pprof
does not have prebuilt binaries for, the module
node-gyp
will be used to
build binaries. See node-gyp
's
documentation
for information on dependencies required to build binaries with node-gyp
.The pprof
CLI can be used to view profiles collected with
this module. Instructions for installing the pprof
CLI can be found
here.
Install pprof
with npm
or add to your package.json
.
# Install through npm while saving to the local 'package.json'
npm install --save pprof
Update code to collect and save a profile:
const profile = await pprof.time.profile({
durationMillis: 10000, // time in milliseconds for which to
// collect profile.
});
const buf = await pprof.encode(profile);
fs.writeFile('wall.pb.gz', buf, (err) => {
if (err) throw err;
});
View the profile with command line pprof
:
pprof -http=: wall.pb.gz
Start program from the command line:
node --require pprof app.js
A wall time profile for the job will be saved in
pprof-profile-${process.pid}.pb.gz
. View the profile with command line
pprof
:
pprof -http=: pprof-profile-${process.pid}.pb.gz
Enable heap profiling at the start of the application:
// The average number of bytes between samples.
const intervalBytes = 512 * 1024;
// The maximum stack depth for samples collected.
const stackDepth = 64;
heap.start(intervalBytes, stackDepth);
Collect heap profiles:
Collecting and saving a profile in profile.proto format:
const profile = await pprof.heap.profile();
const buf = await pprof.encode(profile);
fs.writeFile('heap.pb.gz', buf, (err) => {
if (err) throw err;
})
View the profile with command line pprof
.
pprof -http=: heap.pb.gz
Collecting a heap profile with V8 allocation profile format:
const profile = await pprof.heap.v8Profile();
FAQs
pprof support for Node.js
We found that pprof demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
Security News
Members Hub is conducting large-scale campaigns to artificially boost Discord server metrics, undermining community trust and platform integrity.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.