-
Notifications
You must be signed in to change notification settings - Fork 9
Performance Benchmarking #17
Comments
I just published a small webwire benchmarking tool.
Following parameters are available:
Here's an example of a 60 seconds long benchmark with 1,000 concurrent connections each sending requests with a 1 KiB payload in a 10 to 30 milliseconds interval:
And here's the results of the above benchmark:
System: I7 3930K hexa-core @ 3.8 Ghz; 64,0 GB DDR3 RAM @ 1833 Mhz As you can see I was currently able to achieve around 31,5k requests per second with an average reply time of 9 milliseconds at 1k concurrent clients |
BewareThe benchmark is running amok on Windows 10 in case of many concurrent connections. Windows 10It seems like TCP/IP connection establishment is very slow on Windows causing huge problems when creating many concurrent connections (> 1000). Too many connections are invoking ridiculously many syscalls on Windows resulting in the Go runtime spawning thousands of OS threads because of syscall-blocked goroutines rendering the machine unresponsive when reaching 10k threads. In the above screenshot, MacOS High SierraI've also tested the same configuration on MacOS High Sierra getting very different results: The Mac performed just fine with only 27 OS threads. No degrading performance, no syscall spam. ConclusionIt look more like a Windows related problem rather than a WebWire server/client problem. |
I performed a load test using the latest revision and got the following results: Results
Test SystemIntel i7 3930K (12 threads @ 3.8Ghz, reached full load at 72°C) Consider that both the benchmark and server ran on this machine distorting the results, which could potentially be higher if those were run on different servers. |
Are there already any performance benchmarking results available?
The text was updated successfully, but these errors were encountered: