Create a gist now

Instantly share code, notes, and snippets.

#!/usr/bin/env node
var os = require('os');
var WebSocketClient = require('websocket').client;
var count = 0;
function recursion() {
var client = new WebSocketClient();
client.on('connectFailed', function(error) {
console.log("Connect Error: " + error.toString());
client.on('connect', function(connection) {
connection.on('error', function() {
connection.on('close', function(code, err) {
console.log("Client closed at: "+count+". Reason : " + err);
if(count % 500 == 0) {
// sleep for 5 seconds
var f = os.freemem();
var t = os.totalmem();
console.log('RAM: ' + (f/t * 100) + ', LOAD AVG: ' + os.loadavg().join());
var sleepfor = 5000;
setTimeout(function() {
console.log('active connections: ' + count);
}, sleepfor);
} else {
var random_node_id = function() {
return Math.floor(Math.random()*90000) + 10000;
var random_client_id = function() {
return Math.floor(Math.random()*900) + 100;
client.connect("ws://"+random_node_id()+"/"+random_client_id()+"/websocket", 'echo-protocol');

WebSocketClient is from SockJS?


Nope. Its websocket module on NPM...


Thanks. How many socket connections are you getting? The Worlize client is stable running on Node v0.6?


I'm getting 48.5K concurrency before the ephemeral ports run out. I also discovered that the proxy that i'm using bouncy has some memory leak. So if I fix that / find some better proxy i'll rerun the tests again :) If the mem leak is fixed my estimate is that I can easily have 48.5x3K active connections (note these are just active connections... none of them are broadcasting anything... that will be my next test) on a single node instance.




ok the mem leak is fixed. substack/bouncy#12

going to run the test again tomorrow and update with the results :)


@shripadk any updates on this? Were you able to get 150 000 000 connections out of it? :o

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment