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.