Trying N|Solid
- Download the N|Solid Runtime https://downloads.nodesource.com/
tar -xf nsolid-v1.0...
cd nsolid-v1.0...
./nsolid /path/to/your/app.js
Now let's get tricky
NSOLID_SOCKET=8000 ./nsolid /path/to/your/app.js
var Transform = require("stream").Transform | |
var inherits = require("util").inherits | |
module.exports.ctor = function ctor(fn) { | |
function T(options) { | |
if (!(this instanceof T)) return new T(options) | |
Transform.call(this, options) | |
} | |
inherits(T, Transform) | |
T.prototype._transform = fn |
var lvlup = require("levelup") | |
var db = lvlup("/tmp/source_db") | |
var batch = 10000 | |
function makeBatch(num) { | |
var b = [] | |
for (var i = num; i < num + batch; i++) { | |
b.push({type: "put", key: "z~" + i, value: Math.random()}) |
fs.readFile('/proc/meminfo', 'utf8', function (err, str) { | |
var fields = {}; | |
str.split('\n').forEach(function (line) { | |
var parts = line.split(':'); | |
if (parts.length === 2) { | |
fields[parts[0]] = parts[1].trim().split(' ', 1)[0]; | |
} | |
}); | |
cb(fields['MemTotal'] + fields['Buffers'] + fields['Cached']); |
> var redis = require("redis") | |
undefined | |
> var c = redis.createClient() | |
undefined | |
> c.blpop("Dispo", 0, console.log) | |
true | |
> null [ 'Dispo', 'foo' ] |
var cluster = require('cluster'); | |
var PORT = +process.env.PORT || 1337; | |
if (cluster.isMaster) { | |
// In real life, you'd probably use more than just 2 workers, | |
// and perhaps not put the master and worker in the same file. | |
cluster.fork(); | |
cluster.fork(); | |
cluster.on('disconnect', function(worker) { |
// Short module explanation // Something to gather my thoughts | |
// // I think this looks cool. | |
// | |
module.exports = the_exported_function // Modules are a function. Always. | |
// | |
module.exports.extra = extra // Additional API entry points if | |
module.exports.other = other // desired. | |
// | |
var util = require('util') // Other packages from npm or core | |
var assert = require('assert') // No comma-first due to lots of |
#!/bin/bash | |
if [[ $1 != "-f" ]]; then | |
echo "### Dry-run mode, specify -f to actually perform deletes."; | |
fi; | |
for branch in $(git branch -r --merged origin/master | grep '\<origin/' | grep -v '\<origin/master\>'); | |
do | |
if [[ -z $(git rev-list $branch --since '1 month') ]]; then | |
name=$(echo $branch | sed 's/^origin\///'); | |
if [[ $1 = "-f" ]]; then |
var async = require('async'); | |
function one(cb) { | |
console.log("running one"); | |
cb(null, function () { return "one" }); | |
} | |
function two(cb) { | |
console.log("running two"); | |
function three(callback){ |
Trying N|Solid
tar -xf nsolid-v1.0...
cd nsolid-v1.0...
./nsolid /path/to/your/app.js
Now let's get tricky
NSOLID_SOCKET=8000 ./nsolid /path/to/your/app.js
Y axis = stack depth X axis = percent of time spent in this function
If a function sits atop another, it was in its callchain and spent time in the callee. The more of a parent that is covered by the things it calls, the less it is doing and the more its children are doing.
This means the two main things (in my experience) to look for are:
In the middle of the wide section you can see a function called "parseGif" which is where we'll focus. This particular flame graph was generated to analyze something inside there -- for the most part I don't care about the rest right now.