I'm going to develop a stress test tool to test our app (and submit it as a pull request of course).
So any ideas and/or suggestions are welcome.
I'm looking at something in the lines of https://github.com/remy/Socket.io-node-client :
No plans to develop anything like this at present, so it would be great if you do. Thanks
Here is early proof of concept code:
I had to patch socket.io-client to add the handshakeHeaders option. The code creates 1000 clients in parallel. Each client sends app.init RPC which subscribes it to a channel depending on account subscription status.
Then every 15 seconds two events are broadcast using channels, so each of the 1000 clients receives only one.
1000 parallel RPCs and broadcasts to 1000 clients don't put much load on the server which is a good sign.
@dennismartensson has also been working on this problem and has posted a project here: https://github.com/dennismartensson/load_test
I have yet to fully dive into it, but I know it uses PhantomJS to spawn new headless browsers to test concurrency.
Wanted to know whether anything more is happening on this front? it's worth noting recent efforts with https://github.com/observing/thor and https://github.com/observing/balancerbattle.
Yes, Thor is great! It came out very recently.
If you pass it a generator file you can simulate load on a SS server by sending it the same message an ss.rpc() produces.
Haven't got around to using it with SocketStream yet, but if you get chance, I'd love to see how it goes.
I had a brief look into this. I think that we'll need to upgrade SocketStream's version of engine.io as a first step, and then create a suitable generator file for the expected websocket messages.