Brief reference on HTTP benchmark I know
- ab – Apache Benchmark, fairy simple
- tsung – written in Erlang, supports multiple worker nodes
- JMeter – witten in Java, supports multiple worker roles
- Yandex-Tank – written in Python. Good documentation how to configure Linux kernel – https://github.com/yandex-load/yandex-tank
- Loader.io – clous bases service
Note: I still to find my ideal tool. Creating a calibrated high load is not a trivial task. Simple hand-written load generator on Node.js provided 10%-20% better performance than ab. OS also plays a role here. I found it to be very hard to generate stable outgoing load from Linux machine. Occasionally outgoing TCP connection handshake would freeze for multiple of 3s intervals (tcp retry), or kernel will run out of ephemeral ports, as thousands of sockets are in FIN_WAIT state. I’m speaking about big RPS here, like > 1000 rps per core.