Ich habe 2 LAMP-Webserver, denen routinemäßig der Swap-Speicherplatz ausgeht (siehe beigefügten oberen Screenshot).
Die Einstellungen von Apache sind wie folgt:
<IfModule prefork.c> StartServer 64 MinSpareServer 64 MaxSpareServers 128 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4096 </ IfModule>
Die Ressourcenbeschränkungen für PHP sind:
max_execution_time = 30 max_input_time = 30 memory_limit = 80M
Ich bin neu in solchen Serveradministratoren (ich bin Entwickler). Was kann ich anpassen, um ein Tauschen zu verhindern?
Hier ist ein Screenshot von oben auf einem der Server beim Absturz:
apache-2.2
httpd
httpd.conf
swap
mmattax
quelle
quelle
Antworten:
Ihnen geht der Swap aus, weil Sie Ihren gesamten Arbeitsspeicher und noch einige mehr verwenden. Sie haben ein ernstes Problem, das Sie sofort beheben müssen.
Sie haben zwei Möglichkeiten: Ignorieren Sie die Ursache und fügen Sie einfach mehr RAM hinzu, oder zielen Sie auf das Problem ab, was tatsächlich in Ihrem Speicher steckt.
Das Hinzufügen von RAM ist ziemlich billig und ziemlich einfach, wenn es sich um Ihren Server handelt, aber es handelt sich um eine vorübergehende Lösung, und wenn es sich um einen VPS- oder einen gemieteten Server handelt, ist es nicht so billig. Versuchen wir stattdessen, das Root-Problem zu beheben. Was saugt so viel Gedächtnis auf? Hier einige Tipps:
.htaccess
Dateien verwenden können, aber deren Funktionalität fest codieren können.Wenn Sie nur Swap-Elemente in den realen Arbeitsspeicher zurückbringen möchten, können Sie dies folgendermaßen tun:
Aber versuchen Sie es dann nicht, wenn Sie weniger freien Speicher haben als Dinge im Tausch haben. Es wird Ihren Server zum Absturz bringen.
quelle
Für eine schnelle Änderung tun Sie:
"MaxRequestsPerChild 4096" auf so etwas wie: 700 wird helfen. Je länger ein Apache-Prozess dauert, desto mehr residenten Speicher wird er aufgrund von mod_php und dergleichen verbrauchen. Aktivieren Sie außerdem Keepalive und platzieren Sie aggressive Timeout-Einstellungen dafür:
Auf diese Weise kann jede Client-Seitenanforderung einen Apache-Prozess verwenden, um alle Anforderungen zu verarbeiten, bei denen andernfalls mehrere Apache-Prozesse verwendet würden. Dadurch wird die Anzahl der zu einem bestimmten Zeitpunkt ausgeführten Apache-Prozesse verringert.
Für optimalen Speicher und Anforderungen pro Sekunde:
Entfernen Sie sich von mod_php und verwenden Sie stattdessen fastcgi oder einen anderen App-Server. Apache-Prozesse verbrauchen vernachlässigbar viel Speicher, wenn PHP-Seiten von FastCGI bereitgestellt werden. Ganz zu schweigen davon, dass fastcgi unter anderem Verbindungen zu Ihrem Datenbankserver aufrechterhalten kann.
quelle
Wie wäre es mit einer Verlagerung der Bereitstellung statischer Inhalte auf einen besser geeigneten Server ?
quelle