lighttpd + mod_fastcgi + mehrere php backends

Apache, Lighttpd, nginx, Cherokee
volatile
Posts: 9
Joined: 2009-09-18 16:54

lighttpd + mod_fastcgi + mehrere php backends

Post by volatile » 2009-11-13 19:23

Hallo zusammen!

Ich betreibe ein größeres Vbulletin Forum mit 3000 Usern online.
Derzeit hoste ich das über mehrere Server mit lighttpd und php, Daten via nfs. Loadbalancing derzeit per DNS-Roundrobin, alternativ über eine Balancingappliance.

Ich möchte das ganze etwas verschlanken und habe mir folgendes überlegt:
Wir wäre es statt mehreren lighttpds einen webserver zu starten und die php-Last via mod_fastcgi auf mehrere Backends zu verteilen.

Wer hat Erfahrung mit dieser Lösung?
Erkennt mod_fastcgi wenn Backends offline sind und verteilt dann auf die online Server?
Müssen die Daten auch auf den Backends (via nfs) bereit gehalten werden?

Was gibts für Alternativen - ist lighttpd überhaupt noch aktuell bzw. lohnt es eher auf nginx zu switchen?

Danke volatile

User avatar
Joe User
Project Manager
Project Manager
Posts: 11134
Joined: 2003-02-27 01:00
Location: Hamburg

Re: lighttpd + mod_fastcgi + mehrere php backends

Post by Joe User » 2009-11-13 20:48

http://redmine.lighttpd.net/projects/li ... nceFastCGI sollte als Antwort reichen. Wenn VB-Vanilla mit 3k Usern bereits ein solches Setup benötigt, dann ist VB die falsche Wahl für Dein Projekt...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

volatile
Posts: 9
Joined: 2009-09-18 16:54

Re: lighttpd + mod_fastcgi + mehrere php backends

Post by volatile » 2009-11-13 21:38

Danke für den Link - kannte ich schon. Steht zu den remote backends auch nur drei Zeilen etwas. So wies scheint müssen die App-Clients natürlich auch die Daten haben. Damit bleibt ja fast alles beim alten, nur dass halt dann nur ein Webserver läuft.

Wie stehts mit nginx - im Vergleich zu lighttpd.

papabaer
Userprojekt
Userprojekt
Posts: 170
Joined: 2009-05-14 17:40
Location: Halle (Saale)

Re: lighttpd + mod_fastcgi + mehrere php backends

Post by papabaer » 2009-11-13 22:15

volatile wrote:Wie stehts mit nginx - im Vergleich zu lighttpd.


Super Performance, besser als lighttpd und nach allem was man so hört ne wesentlich bessere Skalierung bei hohen Auslastungen. Aber leider bis jetzt keinen vernünftigen FCGI-Wrapper (berichtigt mich, falls es was Neues gibt). Man kann wohl den Wrapper aus Lighttpd ausbauen und unter nginx nutzen, kein Plan, ob der Kopfstand was bringt.

User avatar
daemotron
Administrator
Administrator
Posts: 2635
Joined: 2004-01-21 17:44

Re: lighttpd + mod_fastcgi + mehrere php backends

Post by daemotron » 2009-11-13 23:43

Lighttpd hat einen entscheidenden Nachteil "by design": Der Daemon ist weder multi-threading noch multi-processing fähig und skaliert daher auf SMP-Systemen nur sehr beschränkt. Das spielte zum Zeitpunkt der "Kiellegung" gar keine so große Rolle, da SMP-Systeme nicht sonderlich verbreitet waren. Heute sieht das anders aus, wo in jeder Kiste mindestens zwei, häufig sogar schon vier physische und bis zu 8 virtuelle CPUs (Quadcore mit Hyperthreading) werkeln.

Nginx arbeitet mit Worker-Prozessen ohne Multi-Threading (ähnlich wie Apache mit mpm_prefork). Hier hören die Gemeinsamkeiten aber auch schon auf; anders als bei Apache wird nicht je Worker ein Request nach dem anderen abgearbeitet, sondern es erfolgt ähnlich wie bei Lighttpd innerhalb der Worker-Prozesse eine asynchrone, Event-getriebene Verarbeitung statt. Die mit Nginx erzielbare Performance hängt damit ähnlich wie bei Lighty davon ab, dass das Betriebssystem ein gutes und vor allem schnelles Event-Subsystem bereithält. Wirklich schnell sind derzeit nur FreeBSD's kqueue und (mit Einschränkungen) Linux' epoll. Auf anderen Systemen wird auf das generische select zurückgegriffen, das als Bestandteil der libc aber deutlich langsamer arbeitet.

Kurz gesagt: Nginx ist Lighty von der Leistungscharacteristik her sehr ähnlich, skaliert aber besser auf SMP-Systemen. Die immer wieder gern zititerten Memory Leaks bei Lighty gehören übrigens seit geraumer Zeit der Vergangenheit an.

Was den von papbear zitierten "FCGI-Wrapper" anbelangt: Nginx bringt kein eigenes Werkzeug mit, um FastCGI-Prozesse zu starten. In einigen Konstellationen ist dies auch garnicht nötig (z. B. bei Pylons/Django/RoR-Applikationen), bei anderen (insb. PHP) ist es hingegen schon vorteilhaft. Hier lässt sich allerdings problemlos spawn-fcgi einsetzen. Das ursprünglich zu Lighty gehörende Tool wurde mittlerweile in ein eigenständiges Projekt ausgelagert; einige Betriebssysteme bieten auch schon Pakete der neueren Stand-Alone Version an.

@Joe User: wenn ich volatile richtig verstanden habe, meinte er ein Board, bei dem 3k User gleichzeitig online sind, nicht 3k User insgesamt...
Last edited by daemotron on 2009-11-13 23:45, edited 2 times in total.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time

User avatar
Joe User
Project Manager
Project Manager
Posts: 11134
Joined: 2003-02-27 01:00
Location: Hamburg

Re: lighttpd + mod_fastcgi + mehrere php backends

Post by Joe User » 2009-11-14 00:22

jfreund wrote:Wirklich schnell sind derzeit nur FreeBSD's kqueue und (mit Einschränkungen) Linux' epoll.

Worauf sowohl Lighty als auch nginx jeweils per Default zurückgreifen.

jfreund wrote:Kurz gesagt: Nginx ist Lighty von der Leistungscharacteristik her sehr ähnlich, skaliert aber besser auf SMP-Systemen. Die immer wieder gern zititerten Memory Leaks bei Lighty gehören übrigens seit geraumer Zeit der Vergangenheit an.

Wobei nginx aber frühestens bei >10k concurrent Request anfängt Lighty hinter sich zu lassen. Darunter sind die Performance-Unterschiede vernachlässigbar klein.

jfreund wrote:@Joe User: wenn ich volatile richtig verstanden habe, meinte er ein Board, bei dem 3k User gleichzeitig online sind, nicht 3k User insgesamt...

Das hatte ich durchaus verstanden ;)
http://www.big-boards.com/ wobei Platz 1 auf dem im Vergleich zu phpBB3 deutlich schlechter skalierendem phpBB2 basiert und die vorgenommen Änderungen weitestgehend im phpBB2-Support-Forum dokumentiert und OOTB in phpBB3 integriert sind. Ich bezweifle einfach mal, dass VB OOTB vergleichbar skaliert oder die nötigen Änderungen ebenso offen dokumentiert sind.
3k Online-User sollten aber auch für VB-Vanilla kein grosses Problem sein. Es sind nahezu immer die diversen Mods und Hacks welche die Skalierungsfähigkeiten erheblich mindern.
Ich möchte glatt darauf wetten, dass das VB des TE ohne Mods und Hacks mit einem Lighty/nginx, einem PHP-Backend und einem MySQLd auf geeigneter Hardware und angepasster Config problemlos läuft.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.