it-swarm.com.de

Optimale Werte für die Anweisungen ServerLimit, MaxClients, MaxRequestsPerChild

Ich betreibe eine verkehrsintensive Website mit vielen dynamischen Inhalten, die hauptsächlich von Benutzern erstellt wurden.

Der Server ist dediziert und verfügt über insgesamt 4 Intel (R) Xeon (R) CPU X3210 @ 2,13 GHz-Prozessoren. Ich muss die optimalen Werte für die Anweisungen von ServerLimit und MaxClients Apache kennen, wenn man bedenkt, dass der Server über 4 GB RAM] verfügt und die MySQL-Datenbank auf einem separaten Server ausgeführt wird. Das Panel ist DirectAdmin mit CentOS.

Im Folgenden sind meine aktuellen Anweisungen aufgeführt, aber während der Spitzenzeiten mit mehr als 5.000 Benutzern wird eine wichtige Verzögerung festgestellt - und es ist nicht die ganze Schuld von MySQL, da Seiten schnell generiert zu werden scheinen (ich habe einen Zeitzähler für die Seitengenerierung implementiert), aber es gibt eine lange Verbindungsverzögerung, bis die Seite zu antworten beginnt und an den Browser gesendet wird.

<IfModule prefork.c>
    StartServers     800
    MinSpareServers   20
    MaxSpareServers   60
    ServerLimit      900
    MaxClients       900
    MaxRequestsPerChild  2000
</IfModule>
Timeout 90
KeepAlive On
KeepAliveTimeout 5

Ich sollte erwähnen, dass bei der Überwachung des Servers mit dem Befehl top die CPU-Auslastung in der Hauptverkehrszeit nie über 20% ~ 30% hinausgeht. Der MySQL-Server ist zu diesem Zeitpunkt ebenfalls zu 30 bis 50% ausgelastet, und ich arbeite ständig daran, langsame Abfragen zu beheben, aber das ist ein anderes Problem. Ich weiß, dass es kein DB-Engpass ist, da das Laden statischer Seiten in Spitzenzeiten auch lange dauert.

Alle Tipps zur Optimierung dieser Werte werden sehr geschätzt, danke.

29
andreszs

Ihr MaxClients ist viel zu hoch. Wie groß ist Ihr Apache-Prozess aktuell? Multiplizieren Sie das x 900. Ist das größer als 4 GB? In diesem Fall wird die Maschine wahrscheinlich ausgetauscht. Normalerweise beginne ich mit MaxClients = 2x vCPUs in der Box (grep -c Prozessor/proc/cpuinfo). Was in diesem Fall ungefähr 8 wäre. Stellen Sie dann sicher, dass die Prozessgröße von MaxClients x Apache nicht über 4 GB liegt.

Sie können Ihre MaxClients von dort aus hochfahren, abhängig von der Art der Verbindung, über die Ihre Clients verfügen. (DFÜ-Benutzer müssen mit dem Löffel gefüttert werden usw.) Stellen Sie jedoch sicher, dass Sie niemals in eine Austauschsituation geraten.

Stellen Sie dann Ihre Min-, Max- und Startserver auf MaxClients ein. Es ist nicht wirklich erforderlich, dass sie sich in einer dedizierten Serverumgebung unterscheiden.

Führen Sie dann einige Tests mit ab durch (als Gänsenotizen).

24
toppledwagon

Sie müssen die durchschnittliche Größe Ihres Apache-Prozesses ermitteln. Mit dieser Nummer und der Gesamtgröße Ihres RAM können Sie die MaxClients-Direktive berechnen. Beachten Sie Folgendes: "Ein Webserver sollte niemals tauschen müssen" ( Apache Performance Tuning )

Die Überwachung mit top oder htop ist in Ordnung, aber Sie benötigen eine bessere Übersicht aller Statistiken Ihrer Server (CPU, RAM, Festplatten-E/A, Apache-Anforderungen, langsame MySQL-Abfragen usw.) mit einem Überwachungstool wie Ganglia oder Munin to mögliche Engpässe finden.

5
hdanniel

Ich empfehle, mit Apaches Benchmark-Tool (ab) herumzuspielen. Sie können mit den Werten herumspielen, um sie an Ihren Verkehrsfluss anzupassen, und sehen, welche Art von Antworten Sie bis zur durchschnittlichen Ladezeit und dergleichen erhalten. An diesem Punkt können Sie mit den Einstellungen herumspielen, über die Sie sprechen, um sie zu optimieren. Sie sollten mit ab in der Lage sein, die optimale Leistung für jede Leistungsoptimierung in den Griff zu bekommen.

Es wäre nicht wirklich klug für mich, über Ihre Einstellungen zu sprechen, aber Sie müssen auch Ihr RAM berücksichtigen, da es so klingt, als würden Sie viel von RAM mit diesen auffressen die Einstellungen. Obwohl das nur Spekulation ohne Daten ist. Mit htop können Sie Ihre Ressourcen visuell gut lesen.

Auch Ihr Lastdurchschnitt könnte viel sagen. Ich bezweifle, dass Ihre Nutzung viel höher ist als Ihre Gesamtanzahl an Kernen von 20-30% CPU, aber es ist ein weiterer Indikator dafür, wie hart Ihr Server tatsächlich arbeitet.

4
goose