Lighttpd vs. Apache2

Meinen Ruhetag habe ich genutzt um mich weiter mit Lighttpd (einem alternativen Webserver) zu beschäftigen.

Nachdem ich vor ein paar Wochen das Teil mal auf meiner Rootmöhre installiert habe und bis dato keine Zeit für weitere Tests hatte, ging es heute mal ans Eingemachte. Fakten mussten her, also wurde gebencht:

Testumgebung:

Auf meinem Rootserver (Cerleron 1200, 256 MB RAM) wurde neben dem Apache2 (2.54-5), mod_php5 (5.0.5-3) auch der lighttpd (1.4.5-1) installiert. Die Maschine ist quasi idle, sodass externe Requests fast vernachlässigt werden können. Test-Requests wurden mittels httperf von einem Rechner mit ordentlicher Anbindung abgefeuert.

Testaufbau:

Für diesen Test bedienten der installierte Apache und der Lighttpd die selbe Document-Root. In diesem Fall ein S9Y. Um weitere Beeinträchtigungen auszuschließen, wurden für den Zeitraum des Tests andere Sites des Apache heruntergefahren.

Der Lighttpd wurde per mod_fastcgi an PHP gekoppelt.

#### fastcgi module
fastcgi.server = ( ".php" =>
(
( "socket" => "/tmp/php.socket",
"bin-path" => "/usr/bin/php",
"min-procs" => 1,
"max-procs" => 5,
"max-load-per-proc" => 4,
"idle-timeout" => 20 )
)
)

Hierbei handelt es sich um die default-Einstellung. Bitte nicht vergessen, dass PHP mit fast-cgi Option gebaut sein muss.

Im Anschluss wurden beide Webserver mittels httperf beballert, nachdem jegliche PHP-Optimizer (z.b. eaccelerator) deaktiviert wurden.

Folgendes kam bei PHP-Requests zum Vorschein:

Apache lighttpd
Request rate: 1.3 req/s (741.2 ms/req)
Request size [B]: 78.0
Request rate: 1.6 req/s (617.2 ms/req)
Request size [B]: 66.0

Bei rein statischem Content zeigt sich folgendes:

Apache lighttpd
Request rate: 34.2 req/s (29.3 ms/req)
Request size [B]: 111.0
Request rate: 33.7 req/s (29.6 ms/req)
Request size [B]: 99.0

(es wurden jeweils 100 Requests bei 10 gleichzeitigen Verbindungen abgefeuert)

Hmmm… was zeigt mir das? Lighttpd fackelt die PHP-Requests rund 20% schneller ab. Der Unterschied bei statischem Content ist fast zu vernachlässigen, wobei hier der Apache die Nase vorne hat.

Ergebnis:
Performacetechnisch ist da sicherlich noch mehr rauszuholen. Habe mich noch nicht ans Finetuning des Lighttpds gemacht. Auf jeden Fall ist das Teil einen Blick wert. Auch die Konfiguration, vorallem alles was irgendwie mit virtual Hosts zusammenhängt ist hier extrem cool.

Doku:
\* Apache2 Doku
\* Lighttpd Doku
\* Benchmark (aus Sicht von lighttpd, was sich grob mit meinen Messungen deckt)

More to come!