
Neuer Systemadministrator hier, der einen CentOS-Server verwaltet. Die letzte Woche war eine der aufregendsten Wochen meiner Karriere und ich habe jede Menge Neues gelernt. Heute habe ich allerdings noch eine weitere Aufgabe, nämlich dafür zu sorgen, dass unser Server mehr bewältigen kann, als unser altes Shared-Hosting vermochte.
Ursprünglich waren wir bei unserem GoDaddy-Shared-Hosting auf 200 gleichzeitige Verbindungen beschränkt. Irgendwann haben wir diese Zahl überschritten (normalerweise während Kampagnen/Marketing-Events) und sind auf einen virtuellen dedizierten Server umgestiegen. Ich gehe davon aus, dass die Anzahl der Verbindungen von Apache verwaltet wird.
Welche Konfigurationen muss ich beachten, um mehr Verkehr zuzulassen?
Antwort1
Sprechen Sie nur über die Bereitstellung statischer Webseiten? Wenn Sie über ein programmgesteuertes Backend verfügen, gibt es darauf eine Vielzahl unterschiedlicher Antworten, aber für Apache sind es definitiv das Prozessmodell und die Anzahl der zulässigen Prozesse/Threads. Sie sollten auch allgemeine UNIX-Apache-Optimierungshandbücher lesen und sicherstellen, dass Sie über ausreichend Prozesse pro Benutzer und offene Dateien verfügen (ulimit -n und -u zeigen diese an; legen Sie sie mit nproc und nofile in /etc/security/limits.conf fest und aktivieren Sie dies durch Hinzufügen von „session required /lib/security/pam_limits.so“ in /etc/pam.d/login).
In älteren Apache-Versionen verwenden Sie immer das „Prefork“-Modell, das einen separaten Prozess pro Thread generiert – das ist die alte MaxClients-Einstellung. Wenn Sie eine Reihe von Modulen und dergleichen verwenden, können 200-250 Apache-Prozesse eine Maschine mit nur einer bescheidenen Menge an RAM leicht füllen. Stellen Sie sicher, dass Sie neuere Apache-Versionen und das „Worker“-MPM verwenden, das ein anderes Threading-Modell verwendet. Dadurch erhalten Sie pro Server etwas mehr (erfordert einige weitere Einstellungen, um dies anzupassen).
Wenn Sie extreme Skalierbarkeit benötigen, wechseln Sie von Apache zu nginx oder ähnlichem. Aber wenn das Szenario nur „etwas mehr als 200“ ist, ist Apache in Ordnung.
Achten Sie darauf, dass Sie Ihr Timeout auf einen einigermaßen niedrigen Wert einstellen, es sei denn, Sie stellen riesige Dateien bereit, etwa 30 oder so.
Verwenden Sie Komprimierung und Caching.
Antwort2
Da Sie eine höhere Auslastung erreichen, müssen Sie möglicherweise auch die Linux-Firewall-Einstellungen anpassen, insbesondere das Conntack-Modul. Im Internet sind einige Artikel dazu verfügbar, meiner ist hier:http://timanovsky.wordpress.com/2009/04/10/tuning-linux-firewall-connection-tracker-ip_conntrack/