Benchmarking 1 million HTTP “Hello World” requests across nginx, 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-server using axum
- go-server using builtin
net/http - kotlin-server using http4k with Helidon server using virtual threads, Java 25.
- node-server using builtin
node:httpserver. - python-server using tornado server, using pre-forking to use all available CPUs.
- nginx-server using nginx.
- 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 server measure:
- Total resident (RSS) memory usage
- Total CPU time
- Total threads created
- Total processes created