Heim  >  Artikel  >  php教程  >  Apache-Leistungsoptimierung (4)

Apache-Leistungsoptimierung (4)

黄舟
黄舟Original
2016-12-21 11:26:161548Durchsuche

Das Folgende ist der Standardkonfigurationsabschnitt von Prefork:

StartServers 5 //

MinSpareServers 5 // Eine Mindestanzahl von Leerlaufprozessen wird festgelegt.

MaxSpareServers 10 //Legen Sie die maximale Anzahl inaktiver Prozesse fest. Wenn die Anzahl inaktiver Prozesse größer als dieser Wert ist, beendet Apache automatisch einige redundante Prozesse. Stellen Sie diesen Wert nicht zu groß ein. Wenn der Wert jedoch kleiner als „MinSpareServers“ ist, passt Apache ihn automatisch auf „MinSpareServers+1“ an. Wenn die Site-Auslastung hoch ist, sollten Sie die Erhöhung von MinSpareServers und MaxSpareServers in Betracht ziehen.

MaxClients 150 // MaxClients ist die wichtigste dieser Anweisungen. Sie legt die Anforderungen fest, die Apache gleichzeitig verarbeiten kann, und ist der Parameter, der den größten Einfluss auf die Apache-Leistung hat. Der Standardwert von 150 reicht bei weitem nicht aus. Wenn die Gesamtzahl der Anfragen diesen Wert erreicht hat (kann durch ps -ef|grep http|wc -l bestätigt werden), werden nachfolgende Anfragen in die Warteschlange gestellt, bis eine verarbeitete Anfrage abgeschlossen ist. . Dies ist der Hauptgrund dafür, dass viele Systemressourcen übrig sind, der HTTP-Zugriff jedoch sehr langsam ist. Systemadministratoren können diesen Wert basierend auf der Hardwarekonfiguration und den Lastbedingungen dynamisch anpassen. Obwohl theoretisch umso mehr Anfragen verarbeitet werden können, je größer dieser Wert ist, darf der Standardgrenzwert von Apache nicht größer als 256 sein (abgeleitet von #define DEFAULT_SERVER_LIMIT 256 in 2.0). Wenn dieser Wert auf mehr als 256 eingestellt ist, wird Apache nicht gestartet. Tatsächlich reicht 256 für Standorte mit etwas schwereren Lasten nicht aus. In Apache 1.3 ist dies eine harte Grenze. Wenn Sie diesen Wert erhöhen möchten, müssen Sie in src/include/httpd.h unter dem Quellcodebaum, der vor „configure“ manuell geändert wurde, nach 256 suchen und finden die Zeile „#define HARD_SERVER_LIMIT 256“. Ändern Sie 256 in den Wert, den Sie erhöhen möchten (z. B. 4000), und kompilieren Sie dann Apache neu. Die ServerLimit-Direktive wurde neu zu Apache 2.0 hinzugefügt, sodass MaxClients erhöht werden kann, ohne Apache neu zu kompilieren. Wenn Sie ServerLimit verwenden, fügen Sie hier einfach eine separate Zeile hinzu. Wenn der Wert von ServerLimit den hier definierten Wert 20000 überschreitet, müssen Sie server/mpm/prefork/prefork.c #define MAX_SERVER_LIMIT 20000 ändern. Ändern Sie 20000 in einen größeren Wert.

MaxRequestsPerChild 0 //Legen Sie die Anzahl der Anfragen fest, die jeder untergeordnete Prozess verarbeiten kann. Jeder untergeordnete Prozess wird nach der Verarbeitung von „MaxRequestsPerChild“-Anfragen automatisch zerstört. 0 bedeutet unendlich, das heißt, der untergeordnete Prozess wird niemals zerstört. Obwohl die Standardeinstellung 0 es jedem untergeordneten Prozess ermöglicht, mehr Anfragen zu verarbeiten, hat die Einstellung auf einen Wert ungleich Null auch zwei wichtige Vorteile: Sie kann versehentliche Speicherlecks verhindern und die Anzahl der untergeordneten Prozesse automatisch reduzieren, wenn die Serverlast abnimmt . Nummer.

Das Arbeitsprinzip von Worker besteht darin, dass der Hauptsteuerungsprozess „StartServers“-Unterprozesse generiert, und zwar jeweils Unterprozess Enthält eine feste Anzahl von ThreadsPerChild-Threads, und jeder Thread verarbeitet Anforderungen unabhängig. Ebenso, um bei eingehenden Anfragen keine Threads zu erzeugen.

Die Anzahl der Threads, die jeder Prozess haben kann, ist festgelegt. Der Server passt sich an, um die Anzahl der Prozesse je nach Auslastungsbedingungen zu erhöhen oder zu verringern. Für die Einrichtung der untergeordneten Prozesse ist ein einzelner Controllingprozess verantwortlich. Jeder untergeordnete Prozess kann eine feste Anzahl von Threads erstellen, die durch ThreadsPerChild angegeben wird. Anschließend überwacht und verarbeitet ein separater Thread eingehende Verbindungen.

Apache versucht immer, einen freien oder inaktiven Service-Thread-Pool aufrechtzuerhalten. Auf diese Weise muss der Client nicht auf die Einrichtung des Threads oder Prozesses warten, bevor er verarbeitet werden kann. Die Anzahl der ursprünglich erstellten Prozesse wird durch die StartServers-Direktive bestimmt. Anschließend erkennt Apache die Gesamtzahl der inaktiven Threads in allen Prozessen und erstellt oder beendet Prozesse, um die Gesamtzahl innerhalb des durch MinSpareThreads und MaxSpareThreads angegebenen Bereichs zu halten. Da es sich bei diesem Prozess um eine Selbstoptimierung handelt, besteht kaum Bedarf, die Standardwerte dieser Anweisungen zu ändern. Die maximale Anzahl von Clients, die gleichzeitig verarbeitet werden können, hängt von der MaxClients-Direktive ab, und die maximale Anzahl von eingerichteten Prozessen hängt von der ServerLimit-Direktive ab. ServerLimit multipliziert mit ThreadsPerChild muss größer oder gleich MaxClients sein.

Das Obige ist der Inhalt der Apache-Leistungsoptimierung (4). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn