Apache "httpd" -Prozess, der den gesamten Speicher meines Servers nutzt

9

Meine kleine ec2-Instanz mit 1,7 GB Speicher, auf der Amazon AMI auf Basis von CentOS ausgeführt wird, hat ein Problem damit, dass Apache viel zu viel Speicher verwendet, als es sollte. Wenn Sie sich den Screenshot ansehen, liegt die Speichernutzung bei 90-100%, bis ich den httpd-Dienst neu starte, wo er neu gestartet wird, und seinen Weg wieder auf über 90% erhöht.

Geben Sie hier die Bildbeschreibung ein

Ich würde mich sehr über Unterstützung bei der Suche nach dem Problem freuen. Ist das vielleicht "normales" Apache-Verhalten, um den gesamten verfügbaren Speicher zu nutzen? Oder gibt es ein mögliches Leck, das ich suchen muss? Im Moment bin ich etwas ratlos darüber, was los sein könnte.

Wir verwenden den Apache MPM-Prefork und kein SQL oder ähnliches - nur Apache. Die Website ist hier .

Amivit
quelle
1
Es scheint keinen Swap zu verwenden. Wo liegt also das Problem?
HTTP500
Sollte die Tatsache, dass so viel Speicher verwendet wird, nicht ein Problem sein? Entschuldigen Sie meine Anfängererfahrung, ich denke, es könnte eine falsche Annahme sein. Vielleicht ist es normal, dass Apache so konzipiert ist, dass es den gesamten Speicher nutzt, den es nutzen kann, obwohl es sich um eine Website mit geringem Datenverkehr handelt?
Amivit
1
Ich habe festgestellt, dass Sie NewRelic verwenden, das auch die in Apache verbrachte Zeit protokollieren kann (möglicherweise hilfreich), wenn Sie diese Zeile zu Ihrer httpd conf hinzufügen: RequestHeader set X-Request-Start "%t"falls Sie dies noch nicht getan haben. Dies wird als "Request Queuing" angezeigt, wenn Sie zu App Server> Übersicht gehen. Dies kann Ihnen helfen, dem Problem auf den Grund zu gehen.
KM.

Antworten:

8

Wie HTTP500 sagte, sollten Sie sich wahrscheinlich keine Sorgen machen, es sei denn, der Computer erstickt tatsächlich. Schauen Sie sich die Hilfe an! Linux aß meinen RAM! . Dies ist keine ganz analoge Situation, da Sie Prozesse anstelle von Puffern haben, die den Arbeitsspeicher verbrauchen, aber es ist nicht zu weit entfernt: Der physische Arbeitsspeicher Ihres Computers ist eine Ressource, die verwendet werden kann, entweder mit Kernel-Puffern oder Ersatz-Apache-Worker-Prozessen, um eingehende Eingriffe sofort zu verarbeiten Anfragen. Wenn Sie keinen RAM verwenden, haben Sie für die Größe Ihrer Box zu viel bezahlt.

Wenn Sie mit MPM-Einstellungen spielen möchten, finden Sie in der Apache-Dokumentation http://httpd.apache.org/docs/current/mod/prefork.html

Sie können möglicherweise die MinSpareServer, StartServer usw. reduzieren, da Sie angegeben haben, dass die Site wenig Verkehr hat. Sie haben dann mehr freien RAM, der von Kernel-Puffern für ihre schändlichen Zwecke verbraucht werden kann.

cjc
quelle
4

Linux, das Ihren gesamten Speicher verwendet, ist normal. Speicher, der ansonsten nicht verwendet wird, wird als Festplatten-Cache verwendet. siehe: linux hat meinen ram gegessen

Sie können dies überprüfen, indem Sie sich die Ausgabe von free -mansehen und erwarten, dass Folgendes angezeigt wird:

             total       used       free     shared    buffers     cached
Mem:          7889       6887        101          0        106       2307
-/+ buffers/cache:       5373       3416
Swap:         1903         17       1886

Die +/- Puffer / Cache-Zeile ist die gewünschte. Es fügt den zwischengespeicherten RAM kostenlos hinzu, um Ihnen ein besseres Bild davon zu geben, wie viel Speicher wirklich verfügbar ist. In diesem Fall möchten Sie auf die Nummer 3416 achten, nicht auf die Nummer 101.

Eintopf
quelle