John Fremlin's blog: teepeedee2 vs nginx's perl module

Posted 2009-10-28 13:06:00 GMT

My friend Zev noticed that there was a discussion of teepeedee2 on the nginx mailing list. Discussion focused on the teepeedee2 benchmark game. The benchmark is to see how quickly a simple dynamic page can be returned to the client, with keepalives and pipelining disabled. It may or may not be relevant to the real world performance of your website in practice (probably not if you use a database); it is a microbenchmark giving an upper bound to the rate your system can serve dynamic pages.

Igor Sysoev (the author of nginx) notes that, This means that this microbenchmark tests mostly TCP connection establishment via localhost. This is correct, but it illustrates one of the misconceptions of the benchmark game; it is what should happen in the ideal world. In fact, In the case of systems like PHP behind Lighttpd (3.1k/s) or Mongrel with Ruby (only 1.8k/s), this adamantly is untrue. In that case the time is dominated by doing other (less necessary) things. If the time is dominated by the TCP setup, then you are doing it right(tm).

Igor posted this code for the embedded perl module on nginx, to play the teepeedee2 benchmark game.

 server {
        listen 8010;
        access_log  off;
        location = /test {
            perl 'sub {
               my $r = shift;
               $r->send_http_header("text/html");
               $r->print("<h1>Hello ", $r->variable("arg_name"), "</h1>");
               return OK;
            }';
        }
    }

To be clear, the teepeedee2 benchmark game does not use keep-alives and I used the following apachebench command as usual

schedtool -a 0 -e ab -n 100000 -c1 localhost:8010/test?name=John
and with nginx 0.8.15 (which I built from the tarball) got
Requests per second:    7666.89 [#/sec] (mean)
Time per request:       0.130 [ms] (mean)
Time per request:       0.130 [ms] (mean, across all concurrent requests)
Transfer rate:          1055.70 [Kbytes/sec] received
on my old laptop.

I think therefore that nginx can take the title of fastest mainstream webserver for dynamic content. Only a 30%-40% speedup needed to compete with teepeedee2!

amazing results.....and lisp powered for max sexiness...so lisp webserver can outperform apache and the epoll server...what about vs aolserver?

Posted 2009-10-30 04:30:21 GMT by claymore_at_eml_cc

Post a comment