How to properly benchmark server performance.

Currently I am working on a new server for our android application that’s using Netty 5. We’re using this to keep a silent keep-alive (TCP) connection to our application at all times to act as a chat server. However, we’re planning on removing the REST functionality of our application and moving to a complete Server/Client solution. I’ve seen no issues with lag while having connections connected constantly and I’m very careful to make sure that we never hold onto any garbage.

Because of the nature of Netty we’re running all of these connections on a total of two threads. They’re keep-alive, but they’re also silent. Meaning nothing is being processed for them and the only time the server ever sends data to the client is when it’s requested.

What is the best way to test the scalability of the server application? We’re aiming to have at-least 350,000 silent concurrent connections in massive preparation for our global launch. Currently we’re at 5~10 thousand downloads in the Philippines only (Beta testing) and we’re about to nail out advertising around the world. I see 200,000 installs very realistic.

Considering we’re not going to be sending / receiving data constantly from all of these connections, a lot of them will be silent at any given time. (Probably around 3/4 of them, if not more).

What is the proper way to connect a bunch of clients to a server and simulate network activity so I can monitor this? Should I just create a fake abstract client and loop through it spamming connections? What about for monitoring performance, task manager isn’t exactly up to par with telling me what I want to know.