Apache verwendet zu viel Server-Speicher, wodurch er abstürzt. Ich habe 4 GB RAM im Server.
Ich versuche, die Apache-Einstellungen zu optimieren, um die Leistung zu verbessern, aber ich bin ziemlich neu darin.
Ich habe versucht, den Ratschlägen dieses Artikels zu folgen , bin mir aber nicht sicher, wie ich die Dinge berechnen soll, und es scheint, als würde ich es noch schlimmer machen.
Mein Top lautet wie folgt:
11697 apache 15 0 322m 37m 4048 S 0.0 0.9 0:00.52 httpd
13602 apache 15 0 323m 37m 3944 S 0.0 0.9 0:00.50 httpd
11786 apache 15 0 322m 36m 4052 S 0.0 0.9 0:00.50 httpd
12525 apache 15 0 322m 36m 4040 S 0.0 0.9 0:00.63 httpd
11806 apache 15 0 322m 36m 3952 S 0.0 0.9 0:00.42 httpd
11731 apache 15 0 322m 36m 4036 S 0.0 0.9 0:00.46 httpd
11717 apache 16 0 322m 36m 3956 S 0.0 0.9 0:00.54 httpd
11659 apache 15 0 322m 36m 3980 S 0.0 0.9 0:00.49 httpd
So wäre es
MaxClients = 3000/ (322-37) = 10
Ist das richtig? Welche Werte sollten auch für die anderen Parameter wie MinSpareServers, MaxSpareServers, MaxRequestsPerChild, StartServers, MinSpareThreads, MaxSpareThreads, ThreadsPerChild, MaxRequestsPerChild gelten?
Würde mir bitte jemand helfen?
Aktualisieren
Ich habe versucht, was ihr vorgeschlagen habt. Es funktioniert, aber nur für eine Weile. Nach einiger Zeit nach dem Start des Servers nimmt die Speichernutzung weiter zu und fällt nie mehr ab.
Ich meine, nachdem ich den Server gestartet habe, nehmen wir an, dass 500 Benutzer online sind. Der Server verbraucht X RAM. 2 Stunden später verbraucht der Server mit denselben 500 Benutzern online 10x RAM.
Gibt es eine Möglichkeit, dies zu vermeiden, oder muss ich den Server weiter beobachten und von Zeit zu Zeit neu starten?
quelle
Antworten:
Der Hauptparameter für die Optimierung der Speichernutzung von Apache ist
MaxClients
. Wenn der Wert zu niedrig ist, gehen Ihnen die verfügbaren Slots zur Bearbeitung von Clientanforderungen aus. Zu viele und Sie werden Ihren gesamten RAM verbrauchen und beginnen, Swap-Speicherplatz zu verwenden, der die Leistung beeinträchtigt (es scheint sich um einen Serverabsturz zu handeln).Eine Möglichkeit zur Optimierung
MaxClients
besteht darin, die Speichernutzung des Systems zu beobachten und die Einstellungen nach Bedarf zu ändern. Wenn der Server zu tauschen beginnt, bearbeiten Sie ihn nach unten. Wenn der Server über freien Speicher verfügt, legen Sie ihn ab.Sie können den Maximalwert auch schätzen, indem Sie sich die Speichernutzung von Apache ansehen. Starten Sie
top
und drücken SieM
, um Prozesse nach Speicher zu sortieren. Sie sollten etwas sehen wie:Subtrahieren Sie die Spalten RES und SHR, um die ungefähre Speichernutzung pro Apache-Instanz zu erhalten. In diesem Fall sind es ungefähr 16 MB. Wenn ich 4 GB RAM habe und möchte, dass 3 GB für Apache verwendet werden, liegt meine MaxClients-Einstellung bei:
In diesem Fall könnte ich also mit einem Wert von 150-200 beginnen, aber ich würde die Speichernutzung beobachten und wenn es jemals anfangen würde, Swap zu verwenden, würde ich MaxClients um 10-20% verringern. Beachten Sie auch, dass der Wert von 3 GB nur ein zufälliges Beispiel ist. Auf Servern, auf denen nur Apache ausgeführt wird, kann ich möglicherweise fast alle 4 GB verwenden. In anderen Fällen möchte ich möglicherweise nur 1 oder 2 GB für Apache, die restlichen für andere Anwendungen, das System oder den Cache.
Bearbeiten: Beantwortung zusätzlicher Fragen
Es gibt im Allgemeinen keine magischen Werte von MaxClients oder anderen Apache-Konfigurationsparametern, die Ihren Server plötzlich doppelt so schnell machen. Einige Server scheinen einwandfrei zu funktionieren, unabhängig davon, ob MaxClients 10 oder 1000 ist. Es gibt zwei Hauptfälle, in denen die MaxClients-Einstellung "schlecht" ist:
Obwohl ich die Details Ihres Servers, Ihrer Anwendung oder Ihres Datenverkehrs nicht kenne, kann ich die folgenden Konfigurationswerte als Ausgangspunkt vorschlagen. Probieren Sie sie aus, überwachen Sie die Auslastung und Nutzung des Servers und ändern Sie die Einstellungen nach Bedarf.
quelle