Skip to content

Instantly share code, notes, and snippets.

@shigeki
Created May 31, 2012 01:30
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save shigeki/2840165 to your computer and use it in GitHub Desktop.
Save shigeki/2840165 to your computer and use it in GitHub Desktop.
socket.io memoryUsage profile with heatbeat by manually gc
var io = require('socket.io').listen(8081);
var parser = require('socket.io').parser;
io.sockets.on('connection', function(socket) {
var pre;
var i = 0;
io.transports[socket.id].parser.on('data', function(p) {
var packet = parser.decodePacket(p);
if(packet.type === 'heartbeat') {
if(global.gc) global.gc();
var memoryUsage = process.memoryUsage();
if(!pre) pre = memoryUsage;
var rss = memoryUsage.rss;
var heapTotal = memoryUsage.heapTotal;
var heapUsed = memoryUsage.heapUsed;
if (i%600 === 0) {
var delta = {};
delta['rss'] = rss-pre.rss;
delta['heapTotal'] = heapTotal-pre.heapTotal;
delta['heapUsed'] = heapUsed-pre.heapUsed;
console.log(i, memoryUsage, 'delta:', delta );
pre = memoryUsage;
}
++i;
}
});
console.log('client connected');
socket.on('disconnect', function() {
console.log('client disconnected');
});
});
io.configure('development', function() {
io.set('heartbeat interval', 0.1);
io.set('log level', 0);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment