H2O

the optimized HTTP/1.x, HTTP/2, HTTP/3 server

Powered by Oktavia

Benchmarks

Download Timings

Providing quick response to user is more important than anything else in web performance tuning. According to a research conducted by Microsoft, 500msec slowdown in Bing causes their revenue go down by 1.2%1.

The chart below compares the first-paint times and download completion times of different web browsers / HTTP servers on a simulated network of 8Mbps bandwidth with 100ms latency, which is typical for today's mobile networks2.

It is clear in the case of this benchmark that the visitors of the web site would be more satisfied, if H2O was used as the HTTP server.

Static-File Serving

Below chart shows the scores recorded on Amazon EC2 running two c3.8xlarge instances (server and client) on a single network placement, serving a 612-byte file3. For each measurement, 250 concurrent clients were used4. open_file_cache was used for Nginx. H2O implements a open-file-cache that gets updated immediately when the files are replaced.

Reverse Proxy

Presented below is an old chart showing the scores recorded on Amazon EC2 running two c3.8xlarge instances (server and client) on a single network placement56.

Notes:

  1. Velocity and the Bottom Line - O'Reilly Radar
  2. A fork of http2rulez.com was used as the target website; bandwidth and latency were induced to local network using qdisc, specifically by running tc qdisc replace dev eth1 root handle 1:0 tbf rate 8192kbit burst 2048 latency 100ms; sudo tc qdisc add dev eth1 parent 1:1 netem delay 100ms, and sysctl -w net.ipv4.tcp_no_metrics_save=1.
  3. Configuration files used: nginx.conf, h2o.conf.
  4. Wrk was used for HTTP/1 tests. h2load was used for HTTP/2.
  5. For reverse-proxy tests, another H2O process running on the same host was used as the upstream server
  6. open-file-cache was not used in the static-file benchmark