Benchmarking 1 million HTTP “Hello World” requests across Rust, Go, Kotlin, Node.js, and Python servers in GitHub Actions.
Consider this an upper bound on the performance of each language/framework, adding more code will make things slower.
- rust-api using axum
- go-api using builtin
net/http - kotlin-api using http4k with Helidon server using virtual threads, Java 25.
- node-api using builtin
node:httpserver. - python-api using tornado server, using pre-forking to use all available CPUs.
- Use oha test tool to make 1 million HTTP requests
- Using HTTP 1.1 with varying number of connections.
- At oha client measure:
- Success rate
- Test duration
- Requsts per Second (RPS)
- Response time (P50, P99, P99.9 milliseconds)
- At API server measure:
- Total resident (RSS) memory usage
- Total CPU time
- Total threads created
- Total processes created