Lighttpd Benchmarks mit XCache
Benchmarks
Um mal den Unterschied wzwischen Apache ohne php cache und Lighty mit Cache zu testen habe icg testweise die alte Installation (Apache suExec/Fastcgi) gegen Lighty fastcgi mit xcache getestet.
Folgende Ergebnisse unten.
Bei statischen Seiten tuen sich beide wenig (hatte bei eine Concurrency von 100 jeweils rund 133 reqs/sec.
Bei dynamischen Seiten ist ein gravierender Unterschied zu sehen.
7 reqs/sec (Apache) vs 26 reqs/sec (Lighty) um Faktor 4 schneller, die Test wurden von einer DSL Leitung zum Server gemacht, diese kann selbstverständlich die Leitung beeinträchtigen. Für den Test haben Lighty und Apache auf den gleichen (realen) Daten gearbeitet. Lighty auf Port 81, Apache auf Port 80. Getestet wurde auf einer Gallery Instanz mit rund 4000 Bilder in vielen SubAlben.
Apache ohne Cache
horus:~# /usr/sbin/ab2 -dS -n 1000 -c 10 http://meinserver.tld/gallery2/main.php
This is ApacheBench, Version 2.0.41-dev
<$Revision: 1.141 $> apache-2.0 Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
Benchmarking meinserver.tld (be patient)
Completed 100 requests
...
Finished 1000 requestsServer Software: Apache Server Hostname: meinserver.tld Server Port: 80
Document Path: /gallery2/main.php
Document Length: 0 bytes
Concurrency Level: 10
Time taken for tests: 140.821320 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1000
Total transferred: 344000 bytes
HTML transferred: 0 bytes
Requests per second: 7.10 [#/sec] (mean)
Time per request: 1408.213 [ms] (mean)
Time per request: 140.821 [ms] (mean, across all concurrent requests)
Transfer rate: 2.38 [Kbytes/sec]
received Connection Times (ms) min avg max Connect: 15 15 29
Processing: 149 138636206
Total: 164 140136235
Lighttpd mit xcache
horus:~# /usr/sbin/ab2 -dS -n 1000 -c 10 http://meinserver.tld:81/gallery2/main.php
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.141 $> apache-2.0 Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
Benchmarking meinserver.tld (be patient)
Completed 100 requests
..
Finished 1000 requests
Server Software: lighttpd/1.4.13
Server Hostname: meinserver.tld
Server Port: 81
Document Path: /gallery2/main.php
Document Length: 0 bytes
Concurrency Level: 10
Time taken for tests: 38.171552 seconds Complete requests:
1000 Failed requests: 0
Write errors: 0
Non-2xx responses: 1000
Total transferred: 334000 bytes
HTML transferred: 0 bytes
Requests per second: 26.20 [#/sec] (mean)
Time per request: 381.716 [ms] (mean)
Time per request: 38.172 [ms] (mean, across all concurrent requests)
Transfer rate: 8.54 [Kbytes/sec]
received Connection Times (ms) min avg max Connect: 13 15 32
Processing: 120 357 8527
Total: 133 372 8559
Ok.. was lernen wir Lighty + xcache etwa Faktor 4 schneller und: Apache hat etwa 15 Fastcgi Instanzen gespawnt, lighty nur seine 5 Stück benutzt.. RAM: Apache 328MB (mit allen gespawnten Instanzen)
RAM: Lighty 3,789MB (eine Instanz) Morgen teste ich lighty mit ohne xcache (vermute ähnliche oder bessere Geschwindigkeiten als Apache)
Test auf einer nicht so php lastigen eigenen Homepage:
Apache: 28,61 req/sec
Lighty/Xcache 52,9 req/sec
Nachtrag: Zur vergleichbarkeit habe ich XCache auch mal beim Apache aktiviert und den Test nochmal gestartet.
Die Gallery ist deutlich schneller geworden und schlägt sich jetzt mit etwa 22 req/sec (Apache) gegen etwa 27 reqs/sec (Lighttpd) Dieser Unterschied kann natürlich auch durch die anderen module (mod_security!) kommen, einen ausführlicheren Test kommt bei Zeiten.
Der Ramverbrauch ist bei Lighty trotzdem um einen enormen Faktor geringer.
Was fehlt noch?
SSL aktivieren
Kein Problem:$SERVER["socket"] == "10.0.0.1:443"
{
ssl.engine = "enable"
ssl.pemfile = "www.example.org.pem"
ssl.ca-file = "/etc/CA.crt" server.name = "www.example.org" server.document-root = "/www/servers/www.example.org/pages/" } * rewrite testen (Wordpress/Wiki) * Performancetests: Mit Apache/lighty xcache ohne xcache, mit größerem xcache mit Variablen cache, mit 10000 Aufrufen und einer concurrency bis 100. === Zusammenfassung === Wi o.g. lassen sich zumindest die Basisinstallationen einfach für lighttpd übernehmen. Einschränkungen gibt es aber auch hier: * Lighttpd braucht eigene rewrite conditions und ist nicht kompatibel zu mod_rewrite von Apache * .htaccess gibt es bei Lighttpd nicht, sondern das muß über mod_auth in der lighttpd conf erlegt werden * .. Andere Dinge die man ausprobieren sollten: * xcache oder APC als OpCode-Cache (taugt, wenn ja wieviel Speicher braucht das, was bringt es? * Lighttpd ermöglicht einfaches Trafficshaping, indem man einzelnen Servern Bandbreite einräumt: $HTTP["host"] == "www.cyrin.de" { server.kbytes-per-second = 128 } * OpenSSL habe ich noch nicht in der VMWare getestet ebenso wie die diversen extra Subdomains, das sollte aber kein Problem darstellen.