Server configuration
Server Config A: 3 c5.2xlarge servers. 1 server with Rhino and Cassandra colocated. Single Cassandra node. 2 servers for client simulator.
Server Config B: 6 c5.2xlarge servers. 1 server for Rhino. 3 servers for Cassandra. Replicated 3-node Cassandra cluster. 2 servers for client simulator.
Server Config C: 3 c5.2xlarge servers. 1 server with Rhino and Cassandra colocated. Single Cassandra node. 2 servers for client simulator. All caching disabled.
Results
SPS - Sessions per second
RPS - Requests per second
Rhino Performance
Test | SPS | RPS | Duration (hours) | Server config | CPU (average) | Heap (average) |
---|---|---|---|---|---|---|
1 |
1000 |
1800 |
2 |
A |
280% |
1.4G |
2 |
1100 |
1980 |
2 |
A |
310% |
1.4G |
3 |
1200 |
2160 |
2 |
A |
330% |
1.4G |
4 |
1000 |
1800 |
2 |
B |
300% |
1.5G |
5 |
1200 |
2160 |
2 |
B |
320% |
1.5G |
6 |
1400 |
2520 |
2 |
B |
380% |
1.5G |
7 |
1000 |
1800 |
2 |
C |
360% |
1.5G |
The CPU reading is for the ShCM JVM, not the whole host. |
Client latency in milliseconds grouped by percentile
Test | SPS | RPS | Duration (hours) | Server config | 50th | 75th | 90th | 95th | 99th | Max |
---|---|---|---|---|---|---|---|---|---|---|
1 |
1000 |
1800 |
2 |
A |
6 |
17.9 |
58.8 |
119 |
264 |
757 |
2 |
1100 |
1980 |
2 |
A |
20.1 |
84.7 |
292 |
438 |
655 |
1210 |
3 |
1200 |
2160 |
2 |
A |
156 |
686 |
1190 |
1530 |
2810 |
3889 |
4 |
1000 |
1800 |
2 |
B |
4.3 |
5.2 |
15.6 |
37.1 |
119 |
837.9 |
5 |
1200 |
2160 |
2 |
B |
4.2 |
5.8 |
22.4 |
41.9 |
131 |
367.2 |
6 |
1400 |
2520 |
2 |
B |
4.8 |
9.8 |
37.4 |
63.7 |
170 |
476 |
7 |
1000 |
1800 |
2 |
C |
2.8 |
21.5 |
88.4 |
139 |
235 |
717 |
Cassandra Disk Usage
All tests had the Cassandra disk usage monitored. The disk usage profile appeared to be the same for all tests.
The default Cassandra settings allow for the commitlog to grow to 8GB before being cleaned up.
Cassandra disk usage maxed at around 9GB for each test.
For the tests with multiple Cassandra nodes in a cluster, each node/server showed the same disk usage profile.
Conclusion
Testing showed that a single ShCM node operating with a 3-node replicated Cassandra cluster can sustainably handle 2160 requests per seconds from a subscriber data pool of 1m, using around 300% CPU with reasonable request latencies (test 5).
Even in the case the RPS was 2520 (test 6) the latency and CPU usage were satisfactory, inside of acceptable ranges.