H2O

the optimized HTTP/1.x, HTTP/2 server
Powered by Oktavia

About H2O

H2O is a new generation HTTP server providing quicker response to users when compared to older generation of web servers. Written in C, can also be used as a library.

Key Features

Benchmark

First-paint Time Benchmark

First-paint time (time spent until the web browser starts rendering the new page) is an important metric in web-site performance. The metric is becoming even more important as access from mobile networks become the majority, due to its latency and narrow bandwidth.

The chart below compares the first-paint times of different web browsers / HTTP servers on network with latency of 100 milliseconds (typical for 4G mobile network). H2O reduces the time by a large margin, by fully implementing the prioritization logic defined by HTTP/2 and with tweaks to adjust the behavior of the web browsers7.

Remote Benchmark

Below chart shows the scores recorded on Amazon EC2 running two c3.8xlarge instances (server and client) on a single network placement8.

Local Benchmarks

The scores (requests/second.core) were recorded on Ubuntu 14.04 (x86-64) / VMware Fusion 7.1.0 / OS X 10.9.5 / MacBook Pro 15" Early 2013.

HTTP/1.19
Server \ size of content6 bytes4,096 bytes
h2o/0.9.075,48359,673
nginx/1.7.937,28943,988
HTTP/210
Server \ size of content6 bytes4,096 bytes
h2o/0.9.0272,300116,022
tiny-nghttpd (nghttpd@ab1dd11)198,01893,868
trusterd@cff8e15167,30667,600

Notes:

  1. also supports draft 14 and 16 for compatibility
  2. only usable at library level
  3. internal memory is used as the storage
  4. ref: Do the ChaCha: better mobile performance with cryptography
  5. automatically enabled
  6. HTTPS is not supported
  7. benchmark details are explained in HTTP/2 (and H2O) improves user experience over HTTP/1.1 or SPDY
  8. for reverse-proxy tests, another H2O process running on the same host was used as the upstream server
  9. used command: wrk -c 500 -d 30 -t 1; configuration file of nginx is here
  10. used command: h2load -c 500 -m 100 -n 2000000; configuration file of h2o is here