60k connections, 7.3k packets/sec, 0.3 sec delivery time
I did it again...
As the previous tests clearly showed the server can handle even more I have spent some time to improve testing software to generate higher load on the server. The goal was 50k connections but I pushed it a little bit further...
I am not going to copy all the details from the previous article, just a few comments for results below:
Average packets per second - in this and in the previous test this number is calculated for packets processed in the last hour.
Average packet delivery time - is significantly longer as in the second test the machine worked very close to its limits what is not apparent from the test results but it will be clear after comments about CPU usage.
Average CPU usage - as this is dual core processor the 65% value doesn't really show what was going on. The same value on a single core CPU means something different. The top command showed usually CPU usage above 115% for Tigase server process. This is because profiler calculates usage for both cores and top calculates for a single core.
Max RAM usage - I let the Java process to allocate up to 900MB of RAM. But even though the test has been running for 6 hours it has never allocated more memory than 752MB and was really using less than 500MB. From the previous test we could thought that Tigase needs over 10kB for each connection. This test shows that this is not a case.
Test resultsStatistics screenshot
Concurrent user connections60 000
Average packets per second7 319
Average packet delivery time300 ms
Average CPU usage65%
Max RAM usage490 MB
Total test time6h, 47s
Number of packets processed64 616 601
Tested software: Tigase server 3.0.2-b696 on Gentoo Linux and JVM - Sun 1.6.0.02
Average CPU usage
I am not going to do it again soon....