Apache bietet mehrere verschiedene MPM-Module für verschiedene Betriebssysteme, wie zum Beispiel: mpm_beos, mpm_event, mpm_netware, mpmt_os2, mpm_prefork, mpm_winnt, mpm_worker. Wenn die Bedingungen es zulassen, können wir das angegebene MPM-Modul entsprechend den tatsächlichen Anforderungen in unseren eigenen Apache kompilieren (der Quellcode von Apache ist offen, sodass Benutzer ihn selbst kompilieren können). Wenn wir jedoch beim Kompilieren keine Auswahl treffen, wählt Apache das entsprechende MPM-Modul entsprechend den verschiedenen Betriebssystemen gemäß der folgenden Tabelle aus. Dies ist auch das von Apache empfohlene MPM-Modul für verschiedene Plattformen. ?? m_beos ist ein von Be Company entwickeltes Multimedia-Betriebssystem. Die offizielle Version wird nicht mehr aktualisiert.
Im Apex-Installationsverzeichnis/conf/extra-Verzeichnis befindet sich eine Konfigurationsdatei mit dem Namen httpd-mpm.conf. Diese Datei wird hauptsächlich zur Konfiguration des MPM-Moduls verwendet. Standardmäßig ist die MPM-Modulkonfigurationsdatei von Apache jedoch nicht aktiviert. Daher müssen wir diese Konfigurationsdatei in der Datei httpd.conf wie folgt aktivieren:
# Server-Pool-Verwaltung (MPM-spezifisch) Fügen Sie conf/extra/httpd-mpm.conf hinzu (Entfernen Sie das Kommentarsymbol „# davor“. Zeile ")
2. Ändern Sie die relevanten Konfigurationen in der MPM-Modulkonfigurationsdatei
Nachdem wir die MPM-Modulkonfigurationsdatei gestartet haben, können wir die Konfigurationsdatei mit einem Texteditor öffnen. Wir können sehen, dass die Konfiguration viele Konfigurationen enthält Dateiknoten, wie in der Abbildung unten gezeigt:
Die entsprechende Konfiguration wird nur wirksam, wenn Apache das entsprechende MPM-Modul verwendet.
Zu diesem Zeitpunkt müssen wir die Parameterkonfiguration unter dem entsprechenden Knoten entsprechend dem aktuellen MPM-Modul ändern Wird vom Apache-Server verwendet. Schauen wir uns zunächst die Standardkonfiguration unter dem Modul mpm_winnt an:
#Da das Modul mpm_winnt nur einen Unterprozess erstellt, entspricht die Parametereinstellung für einen einzelnen Unterprozess hier der Parametereinstellung für den gesamten Apache . ThreadsPerChild 150# Empfohlene Einstellungen: Kleine Website = 1000 Mittlere Website = 1000~2000 Große Website = 2000~3500 MaxRequestsPerChild 0# Empfohlene Einstellungen: Klein = 10000 Mittel oder groß = 20000~100000
Die entsprechenden Konfigurationsparameter lauten wie folgt:
ThreadsPerChild
Maximale Anzahl gleichzeitiger Threads pro untergeordnetem Prozess.
MaxRequestsPerChild
Die Gesamtzahl der Anfragen, die jeder untergeordnete Prozess verarbeiten darf. Wenn die kumulierte Anzahl der verarbeiteten Anforderungen diesen Wert überschreitet, wird der Unterprozess beendet (und dann wird bestimmt, ob bei Bedarf ein neuer Unterprozess erstellt werden soll). Wenn dieser Wert auf 0 gesetzt wird, bedeutet dies, dass die Gesamtzahl der Anforderungen nicht begrenzt ist (der Unterprozess wird niemals beendet). ).
Es wird empfohlen, diesen Parameter auf einen Wert ungleich Null zu setzen, was die folgenden zwei Vorteile bringen kann:
Es kann verhindert werden, dass mögliche Speicherlecks im Programm auf unbestimmte Zeit andauern und der Speicher knapp wird.
Geben Sie Prozessen eine begrenzte Lebensdauer und tragen Sie so dazu bei, die Anzahl aktiver Prozesse zu reduzieren, wenn die Serverlast reduziert wird.
Hinweis: Von den oben genannten Parametern im Zusammenhang mit der Zählung der Anzahl der Anfragen wird bei KeepAlive-Verbindungen nur die erste Anfrage gezählt.
Dann werfen wir einen Blick auf die Standardkonfiguration unter den Modulen mpm_perfork und mpm_worker:
#mpm_perfork-Modul StartServers 5# Empfohlene Einstellungen: Klein = Standard Mittel = 20~50 Groß = 50~100MinSpareServers 5# Empfohlene Einstellungen: Behalten mit StartServers Consistent MaxSpareServers 10# Empfohlene Einstellungen: Klein=20 Mittel=30~80 Groß=80~120 MaxClients 150# Empfohlene Einstellungen: Klein=500 Mittel=500~1500 Groß=1500~3000MaxRequestsPerChild 0# Empfohlene Einstellungen: Klein=10000 Mittel oder Groß =10000~500000 (Darüber hinaus muss zusätzlich der Parameter ServerLimit festgelegt werden, der am besten mit dem Wert von MaxClients übereinstimmt.)
# StartServers: 数量的服务器进程开始 # MinSpareServers: 最小数量的服务器进程,保存备用 # MaxSpareServers: 最大数量的服务器进程,保存备用 # MaxRequestWorkers: 最大数量的服务器进程允许开始 # MaxConnectionsPerChild: 最大连接数的一个服务器进程服务
prefork Nach dem Steuerungsprozess wird zunächst der Unterprozess „StartServers“ eingerichtet Um die Anforderungen der MinSpareServers-Einstellungen zu erfüllen, erstellen Sie einen Prozess, warten Sie eine Sekunde, erstellen Sie weiterhin zwei, warten Sie eine weitere Sekunde, erstellen Sie weiterhin vier ... Dadurch erhöht sich die Anzahl der erstellten Prozesse exponentiell auf bis zu 32 pro Sekunde, bis der Der von MinSpareServers festgelegte Wert wird erreicht. Dieser Modus macht die Erstellung eines neuen Prozesses überflüssig, wenn eine Anfrage eingeht, wodurch der Systemaufwand reduziert und die Leistung erhöht wird. MaxSpareServers legt 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.
MaxRequestsPerChild legt 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:
1 Es kann versehentliche Speicherverluste verhindern. 2. Wenn die Serverlast abnimmt, wird die Anzahl der untergeordneten Prozesse automatisch reduziert.
Daher kann dieser Wert entsprechend der Auslastung des Servers angepasst werden.
Der MaxRequestWorkers-Anweisungssatz begrenzt die Anzahl der Anfragen, die gleichzeitig bearbeitet werden können. Alle Verbindungsversuche innerhalb des MaxRequestWorkerslimits werden normalerweise in die Warteschlange gestellt, bis zu einer Reihe von Anweisungen, die auf dem ListenBacklog basieren.
In Versionen vor Apache 2.3.13 wurden MaxRequestWorker MaxClients genannt.
(MaxClients ist die wichtigste dieser Anweisungen. Sie legt die Anforderungen fest, die Apache gleichzeitig verarbeiten kann. Es ist der Parameter, der den größten Einfluss auf die Apache-Leistung hat. Sein Standardwert von 150 reicht bei weitem nicht aus. Wenn die Wenn die Gesamtzahl der Anfragen diesen Wert erreicht hat (kann mit 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 noch viele Systemressourcen vorhanden sind Der linke und HTTP-Zugriff ist sehr langsam. Je größer der Wert, desto mehr Anfragen können verarbeitet werden, aber das Standardlimit von Apache kann nicht größer als 256 sein
#mpm_worker-Modul StartServers 2#Empfohlene Einstellungen: Klein=Standard Mittel=3~5 Groß=5~10MaxClients 150#Empfohlene Einstellungen: Klein=500 Mittel=500~1500 Groß=1500~3000MinSpareThreads 25#Empfohlene Einstellungen: Klein=Standard Mittel =50~100 Groß=100~200MaxSpareThreads 75#Empfohlene Einstellungen: Klein=Standard Mittel=80~160 Groß=200~400 ThreadsPerChild 25#Empfohlene Einstellungen: Klein=Standard Mittel=50~100 Groß=100~200MaxRequestsPerChild 0#Empfohlene Einstellungen : Klein = 10000 Mittel oder Groß = 10000~50000 (Wenn MaxClients/ThreadsPerChild außerdem größer als 16 ist, müssen Sie zusätzlich den Parameter ServerLimit festlegen. ServerLimit muss größer oder gleich dem Wert von MaxClients/ThreadsPerChild sein.)
Die entsprechenden Konfigurationsparameter funktionieren wie folgt:
StartServers
Die Anzahl der untergeordneten Prozesse, die beim Start von Apache erstellt wurden.
MinSpareServers
Mindestanzahl untergeordneter Prozesse im Ruhezustand.
Der sogenannte untergeordnete Prozess im Leerlauf bezieht sich auf einen untergeordneten Prozess, der keine Anfragen verarbeitet. Wenn die aktuelle Anzahl inaktiver untergeordneter Prozesse geringer ist als MinSpareServers, erzeugt Apache neue untergeordnete Prozesse mit einer maximalen Rate von einem pro Sekunde. Eine Anpassung dieses Parameters ist nur bei stark ausgelasteten Maschinen erforderlich. Dieser Wert sollte nicht zu groß sein.
MaxSpareServers
Maximale Anzahl untergeordneter Prozesse im Ruhezustand.
Dieser Parameter muss nur bei stark ausgelasteten Maschinen angepasst werden. Dieser Wert sollte nicht zu groß sein. Wenn Sie den Wert dieser Direktive auf einen kleineren Wert als „MinSpareServers“ festlegen, ändert Apache ihn automatisch in „MinSpareServers+1“.
MaxClients
Maximal zulässige Anzahl von Anfragen für gleichzeitige Verbindungen.
Jede Anfrage, die das MaxClients-Limit überschreitet, wird in die Warteschlange gestellt, bis der Maximalwert des ListenBacklog-Anweisungslimits erreicht ist.
Für MPM ohne Thread (d. h. mpm_prefork) gibt MaxClients die maximale Anzahl untergeordneter Prozesse an, die zur Verarbeitung von Client-Anfragen verwendet werden können. Der Standardwert ist 256. Um diesen Wert zu erhöhen, müssen Sie auch ServerLimit erhöhen.
Für Thread- oder gemischte MPM (d. h. mpm_beos oder mpm_worker) stellt MaxClients die maximale Anzahl von Threads dar, die zum Verarbeiten von Clientanforderungen verwendet werden können. Der Standardwert von Threaded mpm_beos ist 50. Der Standardwert für gemischtes MPM beträgt 16 (ServerLimit) mal 25 (ThreadsPerChild). Wenn Sie MaxClients auf mehr als 16 bereitzustellende Prozesse erhöhen, müssen Sie daher auch den Wert von ServerLimit erhöhen.
MinSpareThreads
Mindestanzahl von Threads im Ruhezustand.
Verschiedene MPMs behandeln diesen Befehl unterschiedlich:
Der Standardwert von mpm_worker ist 75. Dieses MPM überwacht die Anzahl der inaktiven Threads auf der gesamten Serverbasis. Wenn die Gesamtzahl der Leerlauf-Threads auf dem Server zu gering ist, generiert der untergeordnete Prozess neue Leerlauf-Threads. Der Standardwert von mpm_netware ist 10. Da dieses MPM nur einen einzigen untergeordneten Prozess ausführt, überwacht dieses MPM natürlich auch die Anzahl der inaktiven Threads basierend auf dem gesamten Server. mpm_beos und mpmt_os2 funktionieren ähnlich wie mpm_netware. Der Standardwert von mpm_beos ist 1; der Standardwert von mpmt_os2 ist 5.
MaxSpareThreads
Maximale Anzahl von Threads im Ruhezustand.
Verschiedene MPMs behandeln diesen Befehl unterschiedlich:
Der Standardwert von mpm_worker ist 250. Dieses MPM überwacht die Anzahl der inaktiven Threads auf der gesamten Serverbasis. Wenn die Gesamtzahl der inaktiven Threads auf dem Server zu groß ist, beendet der untergeordnete Prozess die überschüssigen inaktiven Threads. Der Standardwert von mpm_netware ist 100. Da dieses MPM nur einen einzigen untergeordneten Prozess ausführt, überwacht dieses MPM natürlich auch die Anzahl der inaktiven Threads basierend auf dem gesamten Server. mpm_beos und mpmt_os2 funktionieren ähnlich wie mpm_netware. Der Standardwert von mpm_beos ist 50; der Standardwert von mpmt_os2 ist 10.
Hinweis: ServerLimit stellt die maximale Anzahl von Prozessen dar, die Apache erstellen darf. Es ist erwähnenswert, dass Apache zur Kompilierungszeit ein internes hartes Limit von ServerLimit 20000 hat (ServerLimit 200000 für das Modul mpm_prefork). Sie können dieses Limit nicht überschreiten.
Seien Sie besonders vorsichtig, wenn Sie diesen Befehl verwenden. Wenn ServerLimit auf einen viel höheren Wert als tatsächlich benötigt eingestellt ist, wird zu viel gemeinsam genutzter Speicher zugewiesen. Wenn Sie ServerLimit und MaxClients so einstellen, dass sie die Verarbeitungskapazitäten des Systems überschreiten, startet Apache möglicherweise nicht oder das System wird möglicherweise instabil.
Hinweis: Bitte stellen Sie bei der Konfiguration relevanter Parameter zunächst sicher, dass der Server über ausreichende Hardwareleistung verfügt (z. B. CPU, Speicher usw.). Wenn Sie feststellen, dass die Speichernutzung des Servers mit zunehmender Laufzeit des Servers seit dem Start zugenommen hat, liegt möglicherweise ein Speicherverlust im Programm vor. Passen Sie den Wert des Parameters MaxRequestsPerChild nach unten an, um die Auswirkungen des Speicherverlusts zu verringern Fahren Sie so schnell wie möglich fort und finden Sie heraus, wo das Problem im Programm liegt.
Das obige ist der detaillierte Inhalt vonApache ändert die maximale Anzahl gleichzeitiger Verbindungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!