Ich betreibe eine verkehrsintensive Website mit vielen dynamischen Inhalten, die größtenteils von Nutzern erstellt wurden.
Der Server ist ein dedizierter Server und verfügt über insgesamt 4 Prozessoren mit Intel (R) Xeon (R) -CPU X3210 bei 2,13 GHz. Ich muss wissen, um optimale Werte für ServerLimit und MaxClients Apache-Anweisungen zu erhalten, wenn man bedenkt, dass der Server 4 GB RAM hat 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. In Spitzenzeiten mit mehr als 5.000 Benutzern wird jedoch eine erhebliche Verzögerung festgestellt - und dies ist nicht der einzige Fehler von MySQL, da Seiten anscheinend schnell generiert werden (ich habe einen Zeitzähler für die Seitenerstellung implementiert), aber es gibt einen langen Zeitraum Verbindungsverzögerung, bis die Seite zu reagieren 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 die Überwachung des Servers mit dem Befehl top die CPU-Auslastung in der Hauptverkehrszeit nie über 20% ~ 30% hinausgeht. Der MySQL-Server hat zu diesem Zeitpunkt auch eine Auslastung von 30 bis 50%, und ich arbeite ständig daran, langsame Abfragen zu beheben, aber das ist ein anderes Problem. Ich weiß, dass dies kein DB-Engpass ist, da das Laden statischer Seiten in Spitzenzeiten auch sehr lange dauert.
Tipps zur Optimierung dieser Werte sind dankbar.
quelle
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. Denken Sie daran: "Ein Webserver sollte niemals tauschen müssen" ( Apache Performance Tuning )
Das Überwachen mit top oder htop ist in Ordnung, aber Sie benötigen eine bessere Übersicht über alle 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.
quelle
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, über die Sie sprechen, herumspielen, um sie zu optimieren. Sie sollten in der Lage sein, mit ab die optimale Leistung für jede Leistungsoptimierung in den Griff zu bekommen.
Es wäre nicht sehr klug von mir, über Ihre Einstellungen zu sprechen, aber Sie müssen auch Ihren RAM berücksichtigen, da es so aussieht, als würden Sie mit diesen Einstellungen viel RAM verbrauchen. Obwohl das nur Spekulation ohne Daten ist. htop gibt Ihnen einen guten Überblick über Ihre Ressourcen.
Auch Ihr Lastdurchschnitt könnte viel aussagen. Ich bezweifle, dass Ihre Auslastung viel höher ist als die Gesamtanzahl der Kerne zwischen 20 und 30% der CPU, aber es ist ein weiterer Indikator dafür, wie hart Ihr Server tatsächlich arbeitet.
quelle