About recent results read here: 5 Million WebSockets
See also:
This repo contains both server and client used in oatpp-websocket-benchmarks. Both server and client are implemented based on oatpp Async API and oatpp-coroutines
|- client/
| |- src/ // client source code
| |- CMakeLists.txt // client CMakeLists.txt
|
|- server/
| |- src/ // server source code
| |- CMakeLists.txt // server CMakeLists.txt
|
|- prepare.sh // prepare script - will clone oatpp and oatpp-websocket. build and install.
|- sock-config.sh // configure required sysctl(s)
Create two n1-highmem-16 (16 vCPUs, 104 GB memory) - Debian GNU/Linux 9
instances in same VPC on Google Cloud.
- Install git
$ sudo su
$ apt-get update
...
$ apt-get install -y git
...
- Clone benchmark-websocket repo and
cd
to repo folder
$ git clone https://github.com/oatpp/benchmark-websocket
...
$ cd benchmark-websocket
- Install
oatpp
andoatpp-websocket
modules (run ./prepare.sh script).
$ ./prepare.sh
- Configure environment (run ./sock-config-5m.sh script)
$ ./sock-config-5m.sh
$ ulimit -n 6000000
Commands for server instance only:
- Build server
$ cd server/build/
$ cmake ..
$ make
- Run server
$ ./wsb-server-exe --tp 16 --tio 8 --pc 500
where:
--tp
- number of data-processing threads.
--tio
- number of I/O workers.
--pc
- number of ports to listen to.
Commands for client instance only:
- Build client
$ cd client/build/
$ cmake ..
$ make
- Run client
$ ./wsb-client-exe --tp 16 --tio 8 -h <server-private-ip> --socks-max 5000000 --socks-port 10000 --si 1000 --sf 30 --pc 500
where:
--tp
- number of data-processing threads.
--tio
- number of I/O workers.
-h <server-private-ip>
- substitute private-ip of server instance here.
--socks-max
- how many client connections to establish.
--socks-port
- how many client connections per port.
--si 1000 --sf 30
- control how fast clients will connect to server. Here - each 1000
iterations sleep for 30
milliseconds.
--pc
- number of available server ports to connect to.
Note - clients will not start load until all clients are connected.
Note - client app will fail with assertion if any of clients has failed.