Lighttpd läuft hinter Apache für statische Dateien zu verwenden, erscheint mir ziemlich hirnrissig. Apache muss immer noch die HTTP-Pakete entpacken und die Anfrage durch seinen Parse-Baum analysieren, Proxy-Anfragen senden, und dann muss Lighttpd die Pakete wieder entpacken, auf das Dateisystem zugreifen und die Dateien durch Apache zurückschicken. Ich habe noch nie von jemandem gehört, der ein solches Setup in der Produktion verwendet.
Was Sie sehen werden, sind Leute, die einen leichtgewichtigen Webserver wie Nginx als Vorderseite Server, um statische Dateien bereitzustellen und dynamische URLs an den Apache weiterzuleiten. Oder Sie können Lackierung o Tintenfisch als Caching-Reverse-Proxy-Frontend, so dass alle Ihre hochfrequentierten statischen Dateien (d.h. Bilder, CSS usw.) und alle dynamischen Seiten, für die Sie bereit sind, cachefreundliche Header zu senden) werden aus dem Speicher bedient.
Apache kann auch für die Bereitstellung statischer Dateien optimiert werden. Wenn ich höre, dass sich Leute über Apache beschweren, dann wissen sie oft nicht, wie sie ihn konfigurieren sollen. Sie haben immer nur das Prefork-MPM verwendet (im Gegensatz zu Threaded oder Worker) und haben alle möglichen Module aktiviert (normalerweise verwenden sie das Apache-Paket einer Linux-Distribution, die alles als Module baut und standardmäßig 10-20 Module oder mehr aktiviert hat). Optimieren Sie den Apache, indem Sie nicht benötigte Module bzw. dumme Funktionen wie die Unterstützung für .htaccess (die den Apache dazu veranlasst, das Dateisystem bei jeder Anfrage zu durchsuchen) zuerst abschalten. (Sie können auch zwei Instanzen von Apache laufen lassen, mit einem "leichten" Apache als Frontend, der für dynamische Anfragen auf einen "schweren" Apache verweist ... vielleicht ist Ihr Frontend threaded, aber Ihr Backend ist prefork, weil Sie thread-unsichere externe Module wie mod_php laufen lassen müssen.)
Re:
Da Sie noch einen Apache-Prozess haben für jede eingehende Anfrage erzeugt wird wie wirkt sich dies positiv auf die die Last aus? Soweit ich sehen kann, ist die Größe des Apache-Prozesses, der seine Anfrage durch lighttpd ist so groß wie er es wäre, wenn er die Datei Datei selbst bedienen würde.
Wenn Sie bei jeder Anfrage Prozesse erzeugen, bedeutet das, dass Sie das Prefork-MPM verwenden. Denken Sie daran, dass, wenn das Betriebssystem die Speichernutzung für jeden dieser Prozesse meldet, nicht der gesamte Speicher belegt ist, viele dieser Prozesse sind im Leerlauf. Und wenn Sie über Geschwindigkeit sprechen, geht es Ihnen mehr um das Parsen von Anfragen und die internen Codeverzweigungen für eine bestimmte Anfrage (wie viel verarbeitet der Server?) als um die vom Betriebssystem gemeldete Speichernutzung.
Wenn Sie zum Beispiel etwas wie mod_php aktivieren, wird jeder dieser Worker-Prozesse sofort um etwa 20-40 MB anwachsen (je nachdem, was in Ihrem PHP-Interpreter aktiviert ist), aber das bedeutet nicht, dass der Apache diesen Speicher für statische Anfragen verwendet. Wenn Sie Ihren Server für maximale Gleichzeitigkeit bei kleinen statischen Dateien optimieren, wäre die Aktivierung von mod_php natürlich trotzdem sehr schlecht, da Sie nicht annähernd so viele Prefork-Prozesse im RAM unterbringen können.
Ich könnte mir wahrscheinlich eine "Albtraumkonfiguration" für Apache ausdenken, die würde es tatsächlich langsamer machen, statische Dateien zu servieren, als diese Anfragen an ein Lighttpd-Backend weiterzuleiten, aber das würde bedeuten, teure Funktionen wie .htaccess im Apache zu aktivieren, die in Lighttpd deaktiviert sind, also wäre es nicht wirklich fair.