Frage

Um Apache Last Menschen oft leichter zu machen vorschlagen lighttpd mit statischen Inhalten zu dienen.

z. http://www.linux.com/feature/51673

In diesem Setup Apache übergibt Anforderungen für statische Inhalte zurück zu lighttpd über mod_proxy, während dynamische Anfragen dient selbst.

Meine Frage ist: wie diese die Last auf dem Server nicht reduzieren? Da Sie noch ein Apache-Prozess für jede Anforderung hervorgebracht haben, die in kommt, wie funktioniert dies positiv auf die Belastung auswirken? Von dem, was ich die Größe des Apache-Prozesses sehen kann seine Anfrage durch lighttpd Proxying ist so groß wie es wäre, wenn es die Datei verbüßten selbst.

War es hilfreich?

Lösung

Ausführen von Lighttpd hinter Apache statische Dateien dienen sicherlich mir hirntot zu sein scheint. Apache hat immer noch die HTTP-Pakete entpacken und die Anforderung durch den Parse-Baum zu analysieren, Proxy-Anfragen senden, und dann hat Lighttpd zu auspacken wieder, schlug das Dateisystem und die Dateien wieder durch Apache senden. Ich habe noch nie jemand mit einer Einrichtung wie diese in der Produktion gehört.

Was werden Sie sehen, ist, die Menschen einen leichten Webserver verwenden wie Nginx als Frontend Server statische Dateien und Proxy dynamische URLs Apache zu dienen. //www.squid-cache: Alternativ können Sie Varnish oder Squid als Caching Reverse-Proxy-Frontend, so dass alle Ihre High-Traffic-statische Dateien (zB Bilder, CSS usw. und alle dynamischen Seiten, die Sie‘ bereit sind Cache freundliche Header für) zu senden sind, aus dem Speicher bedient.

Der Apache kann auch statische Dateien dienen optimiert werden - so oft, wenn ich die Leute über Apache hören beschweren, sie wissen wirklich nicht, wie es zu konfigurieren. Sie habe nur jemals das prefork MPM (vs. Gewinde- oder Arbeiter) und haben alle möglichen Module aktiviert ist (in der Regel sind sie von einer Linux-Distribution Küchenspüle Apache-Paket ausgeführt wird, zu ermöglichen, alles als Module und Standardwerte baut 10-20 Module oder mehr). Tune Apache durch nicht benötigte Module / dumm Features wie Unterstützung für .htaccess ausgeschaltet (was macht Apache das Dateisystem scannen bei jeder Anfrage!) Zuerst. (Sie können auch zwei Instanzen von Apache, mit einem „Licht“ Apache als Frontend laufen, die für dynamische Anforderungen an einen „schweren“ Apache-Proxys ... vielleicht Frontend einem Gewinde versehen ist, aber Ihr Backend ist Prefork weil Sie laufen müssen faden unsicher externe Module wie mod_php.)

Re:

  

Da Sie noch einen Apache Prozess   für jede Anforderung hervorgebracht, die kommt   in, wie auswirkt dies positiv   die Ladung? Von dem, was ich die Größe sehen   der Apache Prozess Proxying seine   Ihre Anfrage durch den lighttpd ist so groß   wie es wäre, wenn es die verbüßten   Datei selbst.

Wenn Sie Laichen Prozesse bei jeder Anfrage, dann bedeutet, dass Sie das prefork MPM verwenden. Beachten Sie, dass, wenn das OS die Speichernutzung für jeden dieser Prozesse berichtet, nicht alle, dass der Speicher verdrahtet ist, sind viele dieser Prozesse im Leerlauf. Und wenn Sie sprechen über die Geschwindigkeit, sind Sie mehr mit Anfrage-Analyse und interne Codezweige für eine bestimmte Anforderung besorgt (wie viel Verarbeitung ist der Server zu tun?) Als mit der Speichernutzung durch die OS gemeldet.

Zum Beispiel, wenn Sie so etwas wie mod_php zu aktivieren, dann jeder dieses Arbeitsprozesses wird sofort von etwa 20-40m (je nachdem, was in Ihrem PHP-Interpreter aktiviert ist) zu gehen, aber das bedeutet nicht, Apache verwendet , dass der Speicher auf statische Anforderungen. Natürlich, wenn Sie Ihren Server für maximale Concurrency auf kleine statische Dateien sind zu optimieren, dann ermöglicht Mod_php immer noch sehr schlecht sein würde, du bist nicht annähernd so viele Prefork Prozesse in den RAM gehen zu können, passen.

Ich könnte wahrscheinlich mit einer „Alptraum-Konfiguration“ für Apache kommen, dass würde macht es tatsächlich langsamer dient statische Dateien als Proxying dieser Anfragen an Backend Lighttpd, aber es würde bedeuten, so dass teuere Funktionen wie. htaccess in Apache, die in Lighttpd deaktiviert sind, so dass es nicht wirklich fair wäre.

Andere Tipps

  1. Wenn Sie immer noch die Macht haben, dienen statische und dynamische Inhalte aus der derselben Maschine (wie sie in den verwies auf Artikel tun), dann sehe ich wirklich keinen Sinn in dieser Einrichtung.
  2. Vielleicht hat er die Last von Apache zu reduzieren, weil es nicht IO zu tun, auf die Festplatte hat, aber es wird die Last von Lighttpd auf die gleiche Maschine und wodurch die verfügbar Last Apache ...
  3. Vielleicht ist Lighttpd IO Zugang leichter, als die von Apache 1.3, aber warum nicht einfach wechseln zu Apache 2 oder Lighttpd vollständig? Und wenn die Leistung wirklich zu saugen beginnen, bewirtet die statischen Dateien auf einem anderen Rechner (media.yourdomain.com).

ich kleine Einführung, wie Sie eine performante Setup machen können, ist hier zu finden: Bereitstellen von Django -> scroll einigen Seiten vor dem Ende

Scaling

Ich weiß nicht viel über die interne Funktionsweise von Apache, aber eine Erklärung, die ich gesehen habe, ist über Speicherdruck. Kurz gesagt, versucht Apache den Speicher verwendet es für das Caching und für dynamische Seiten zu balancieren; aber in der Regel endet mit zu viel Cache und zu wenig für Apps. Wenn Sie sie auf verschiedene Prozesse trennen, jeder wird für die Art der Belastung optimieren.

Derzeit, was ich tue verwendet nginx als Front-End. Es ist wirklich schnell und leicht, und speziell als Frontend-Proxy entwickelt; sondern dient auch statische Dateien. In der Tat, da es auch FastCGI Prozesse aufrufen können, könnten Sie loswerden Apache bekommen und immer noch die Vorteile der geteilten Datei / app Prozesse erhalten. (Und es gibt einige zusätzliche Memcached Magie rel="nofollow , die absolut Genie)

(Ja, lighttpd kann auch als Frontend für Apache und / oder FastCGI verwendet werden)

Sie haben nicht ein Apache-Prozess für jede Anforderung hervorgebracht -. Statische Dateien (Bilder und dergleichen) werden direkt von lighttpd geholt

Verwenden Sie Apache MPM Worker fastcgi dies wird Ihnen Server Speichernutzung senken. MPM Arbeitnehmer dient statische Inhalte besser als Prefork und ist fast gleichauf mit lighttpd, wenn es um statische Inhalte kommt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top