VPS-Speicher selbst bei leichten Einstellungen erschöpft

VPS-Speicher selbst bei leichten Einstellungen erschöpft

Linux-Neuling hier. Ich habe einen 256 MB großen VPS auf einem Ubuntu 11.04-Server und wenn ich „free -m“ ausführe, zeigt das Ergebnis, dass der gesamte Speicher verwendet wird (einschließlich der zweiten Zeile zu Puffern/Cache). Ich fand das sehr seltsam, wenn man bedenkt, dass ich nur 5 Apache-Prozesse laufen habe, die jeweils etwa 20 MB verbrauchen. MySQL nimmt 30 MB in Anspruch. Meines Wissens und laut „top“ habe ich keine anderen Speicherfresser in Betrieb.

Folgende Einstellungen können relevant sein:

PHP memory_limit = 32M
MYSQL key_buffer = 16M
Prefork MPM Maxclients = 10

Als ich diese Einstellungen überprüfte, dachte ich natürlich, dass maxclients zu hoch war, also versuchte ich, es auf 5 zu ändern. Jetzt wird nicht nur mein Speicher immer noch als zu 100 % genutzt angezeigt, sondern meine Website lädt auch viel, viel langsamer, obwohl ich im Moment keinen anderen Verkehr als meinen habe. Ich verstehe das nicht. Ich dachte, ein einzelner Apache-Prozess verarbeitet alle Anfragen eines Clients, die innerhalb des „KeepAliveTimeout“-Fensters eingehen, das ich auf 2 Sekunden eingestellt habe. Mit meiner anfänglichen Konfiguration von 10 maxclients beträgt meine Seitenladezeit etwa 0,3 ms, also sollte ein einzelner Prozess das problemlos bewältigen, richtig?

Als nächstes habe ich für Maxclients die extreme Stufe 1 gewählt. Mein Speicher ist immer noch zu 100 % ausgelastet und meine Site lädt quälend langsam. Ich bin ein Neuling und weiß hier überhaupt nicht weiter. Laut den vielen Tutorials, die ich zur grundlegenden Servereinrichtung gelesen habe, sollte es klappen.

Hilfe bitte!

Edit:
             total       used       free     shared    buffers     cached
Mem:           256        256          0          0          0          0
-/+ buffers/cache:        256          0
Swap:            0          0          0

Antwort1

Das liegt daran, dass Linux den größten Teil des Speichers als Cache verwendet und Teile davon nach Bedarf an jede ausgeführte Anwendung zurückgibt.

Also keine Panik.Alles ist in Ordnung. Ändern Sie die MaxClients zurück auf die Standardeinstellungen.

EDIT: es sieht so aus, als ob Sie OpenVZ verwenden. Siehe die Antwort von David Schwartz unten.

Antwort2

Sie haben keinen Swap, was es für das Betriebssystem sehr schwierig macht, physischen Speicher zu sparen. Im Grunde hat es keinen Platz, um Daten zu speichern, auf die wahrscheinlich nie zugegriffen wird, von denen es aber nicht beweisen kann, dass dies nie der Fall sein wird. Es hat also keine andere Wahl, als sie im RAM zu speichern.

Stellen Sie sich beispielsweise einen Dienst vor, der beim Hochfahren Ihres Servers gestartet wird, auf den jedoch nie zugegriffen wird. Er kann auf eine Bibliothek verweisen, die verschoben wird. Diese Verschiebung verschmutzt Codeseiten im Speicher. Beim Start wird er wahrscheinlich etwas Speicher zuweisen und dessen Inhalt ändern. Mit Swap können diese Seiten aus dem Speicher entfernt und im Swap gespeichert werden, wenn der Dienst längere Zeit nicht ausgeführt wird oder wenn der Speicher knapp ist. (Wahrscheinlich werden sie nie abgerufen, aber das kann der Kernel nicht riskieren – denken Sie an einen Dienst wie ssh!)

Ohne Swap kann der Kernel keine schmutzigen Seiten auslagern, selbst wenn diese tagelang nicht aufgerufen wurden. So wird der wertvolle physische Speicher mit nutzlosem Müll gefüllt.

Aktualisieren: Anscheinend handelt es sich hierbei um ein Artefakt von OpenVZ. Es gibt Swap, und die Speicherzahlen, die Sie sehen, sind bedeutungslos. Ihre Leistungsprobleme können auf etwas zurückzuführen sein, das in Ihrer Kontrolle liegt, oder auch nicht.

verwandte Informationen