The Node.js continuous profiling is currently made across 2 dimensions:
Get the Blackfire Continuous Profiler Node.js library:
1
npm install @blackfireio/node-tracing
The Node.js continuous profiler API has two functions:
1 2
function start(config) {}
function stop() {}
function start(config) {}
¶
The start
function starts the continuous profiler probe.
It collects profiling information in the background and periodically uploads it
to the Blackfire Agent until the stop
function is called.
1 2 3 4 5 6 7 8 9
const Blackfire = require('@blackfireio/node-tracing');
Blackfire.start({
appName: 'my-app'
});
// your application...
// If needed, you can stop profiling before cpuDuration
// Blackfire.stop();
The Start
function accepts an object as a parameter with the following keys:
appName
: name of the applicationdurationMillis
: time in milliseconds for which to collect profile (default: 45_000)cpuProfileRate
: average sampling frequency in Hz. (default: 100)labels
: Labels to add to the profile. (default: {})uploadTimeoutMillis
: Timeout in milliseconds for the upload request (default: 10000)function stop() {}
¶
Stops the continuous profiling probe.
1
npm install express @blackfireio/node-tracing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
const Blackfire = require('@blackfireio/node-tracing');
const express = require('express')
const crypto = require("crypto");
const app = express()
const port = 3000
app.get('/', (req, res) => {
const salt = crypto.randomBytes(128).toString("base64");
const hash = crypto.pbkdf2Sync("this is my password", salt, 10000, 512, "sha512");
res.send('Hello World!');
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
Blackfire.start({appName: 'blackfire-example'});
})
1
node index.js