Nginx ist auch um längen Ressourcenschonender.
Und solange man bestimmte Features von Apache nicht braucht würde ich auch bei HA Seiten Nginx empfehlen.
Und noch was: anscheinend gibt es noch Probleme mit den E-Tags. Response ist bspw.
Code:
ETag:"4a20249-260-4c52799b4c500"
und Request ist
Code:
If-None-Match:"1e0121c-260-4c52799b4c500"
für
http://www.bronies.de/images/socialicons/twitter_small.png
Gibt dementsprechend immer einen 200 OK statt einem 304 Not modified. Daneben wendet er auch kein GZIP an um den Traffic zu verringern (zumindest bei Bildern. Bei dem eigentlichen PHP Script scheint das Forum auf GZIP zurück zu greifen.
Noch einen weiteren Caching Vorschlag: alles in einem Thread (showthread.php), was vor der neusten Seite (also bei dem Thread bspw. auf Seite 10) ist, mit einem entsprechenden Caching Header versehen und von einem HTML Cache (wie den von Nginx) für einen Tag oder so cachen lassen. Sollte Lastprobleme auf der DB erheblich minimieren.
Daneben noch die DB über eine RAM Disk laufen lassen (verringert den IO) und auf Redis umstellen und den Cache von Informationen wie Post Bit hochschrauben.
Also im Bereich Caching kann man hier noch ordentlich schrauben um Lastspitzen zu vermeiden. Vorallem bei 32GB RAM kann man die DB so schön entlasten.
(Bevor jetzt kommt das es doch so gut läuft atm: ich hatte heute schon mehrmals längere Ladezeiten - und an der Verbindung kanns net liegen - ich bin über 10GBit Glasfaser am DE-CIX)
(19.08.2013)Lazy Dream schrieb: [ -> ]Apache ist aber auch ein Enterprise-Produkt, das eben sehr viele Features hat, deswegen wird es auf großen Webseiten genauso eingesetzt.
Man muss halt abwägen, welche Module man sonst noch braucht. SVN geht mit Lighttpd z.B. nicht und und und.
Apache wird sehr häufig als Backend Webserver verwendet, mit einem Leichtgewicht wie Nginx vorgeschaltet, welcher sich auch um Caching kümmert.
Bei auto-motor-und-sport.de sieht die Requeststrecke wie folgt aus:
Nginx (Caching der Bilder und Loadbalancing) => Varnish (Cache der kompletten Seite über ESI) => Apache 2 (auf den einzelnen Webservern zur Erzeugung der Webseite).
Auf mittelgroßen Seiten fällt dann der Varnish weg (sehr großer Aufwand, da man die ESI Snippets gescheit einbauen muss) und bei kleineren Kunden läuft alles eig. nur über den Nginx (weil wir keine Apache2 Features benötigen).
Selbst die Imageserver laufen nur über Nginx und FastCGI statt über Apache und mod_perl (was wesentlich weniger Fehleranfällig aber auch zigmal langsamer ist).
(19.08.2013)Lazy Dream schrieb: [ -> ]Man muss halt nur schauen, dass die Daten regelmäßig und sicher aus dem RAM gezogen werden. Ich bezweifle, dass es jemanden umbringen wird, wenn im Falle des Falles {5,10,30,60} Minuten Posts verloren gehen.
MySQL lässt sich soweit mir bekannt entsprechend so einstellen, dass Bin Logs ständig auf die Platte geschrieben werden. Dadurch wäre das Backup sozusagen vorhanden. Man muss nur zusehen, dass man dennoch immer in der Nacht einen Dump fährt, weil sonst die Platte mit zu vielen Bin Logs vollläuft (es werden halt sämtliche schreibenden Statements gespeichert).