Apache2 stellt im einwandfreien Zustand langsam statische Daten bereit

Apache2 stellt im einwandfreien Zustand langsam statische Daten bereit

Mein Apache-Status sieht so aus:

201 requests/sec - 98.8 kB/second - 504 B/request
85 requests currently being processed, 345 idle workers
_____CCW_C_____C__C__C_R____C_WC_________C__C____CW__C__CCC_____
__C____W______C___C___CW__C_C______C__W_C__C_____CCC____C______R
CC_C_______C___C____C______________C______C__C________________C_
___________________C______________________C_______C___C_____C___
CC____C__C___R_____C_C_CC__________C___C___________R____C_C_C___
______C______W_W__W___C____________________C__WCC__R__R_C_______
R__RC________________________C___R____W__C____..................
....................................................

Die Serverlast beträgt auf einer 4-Kern-Maschine durchschnittlich 2.

Die IO-Auslastung liegt bei 10–15 % und steigt selten über 70 %.

Die Maschine hat fast 4 GB frei und verwendet 0 Swap.

Die Site auf dem Rechner ist eine PHP-Site. Der gesamte PHP-Code ist optimiert und beim Zugriff meist schnell, aber manchmal bleiben Anfragen hängen. Hängenbleiben bedeutet: mindestens 10 Sekunden lang keine Antwort. Wir haben den PHP-Code debuggt, aber er ist ziemlich optimal und schnell. Wir haben viel Zeit darauf verwendet, bis wir beschlossen, die Anfragen zu testen:

<html><body>test</body></html>

test.html-Seite.

Auch diese statische Ressource bleibt auf die gleiche Weise „hängen“, wie die PHP-Seiten „hängenbleiben“.

Wie ist das möglich, wenn man den Zustand des Systems und die Tatsache bedenkt, dass es sich um eine statische Datei handelt?

Ich habe das Netzwerk getestet, aber wenn PHP in der Site-Überwachung „Langsamkeit“ anzeigt, dauert das Laden der HTML-Testdateien auch (viel länger) als 10 Sekunden;

time lynx -dump http://127.0.0.1/test.html

Wir versuchen verzweifelt, dieses Problem zu lösen, aber wir scheinen es nicht in den Griff zu bekommen.

Antwort1

Vielleicht gehen Apache die Dateihandles aus? Wie viele Dateihandles haben Sie zugelassen? Der Standardwert von 1024 kann schnell zum Engpass werden. Unter Linux erhöhen Sie die Grenzen in /etc/security/limits.confDateien.

Gibt es während der Verzögerungen viel Festplattenaktivität? Wenn Sie das Apache-Zugriffsprotokoll und andere Protokolle sehr ausführlich aktiviert haben, sind es vielleicht die letzten Änderungen, die vom Dateisystem übernommen werden? Das sollte Apache in keiner Weise beeinträchtigen, aber man kann nie wissen.

Und um sicherzugehen, schauen Sie sich /proc/sys/kernel/random/entropy_availdie Verzögerungen an. Sie können dies beispielsweise an sehen watch -n1 'cat /proc/sys/kernel/random/entropy_avail'. Wenn angezeigt wird 0, ist Ihrem Kernel die Entropie ausgegangen und Apache wird blockiert, bis mehr Entropie verfügbar ist.

Wenn dies der Fall ist, können Sie rng-toolsden rngdDaemon installieren und ausführen, der in Situationen, in denen die tatsächliche Entropie nicht verfügbar ist, halbzufällige Zahlen von /dev/urandom nach /dev/random schiebt.

Antwort2

Ich habe mich nicht mit den internen Vorgängen befasst, aber aus meiner Erfahrung und dem, was man mir gesagt hat, lässt sich sagen: Wenn PHP auf Apache unter Verwendung des eingebetteten Moduls ( libphp5.so) ausgeführt wird, dann lädt Apache PHP (und optional alle gemeinsam genutzten Module) bei jeder Anforderung in den Speicher, selbst wenn der PHP-Code nicht ausgeführt wird.

Erwägen Sie die Verwendungnginxals Reverse-Proxy vor Apache. nginx ist unglaublich schnell beim Bereitstellen statischer Ressourcen und kann bei richtiger Konfiguration die Belastung eines ausgelasteten Webservers erheblich reduzieren. Für Bonuspunkte konfigurieren Sie PHP so, dass es über FastCGI innerhalb von nginx ausgeführt wird. Sehen Sie sich Folgendes an:Dieser Artikelum einige Gründe dafür herauszufinden. Das ist wirklich eine tolle Vorgehensweise. Ich habe erst letzte Woche einen neuen Webserver mit Ubuntu 10.04, nginx, spawn-fcgi und php-cgi eingerichtet und es hat fast gar keine Zeit gedauert. PHP 5.3 ist übrigens in Ubuntu 10.04 enthalten.

verwandte Informationen