Wie lange bleibt Apache am Leben, wenn es einen Prozess für Mod-PHP gibt? Stirbt der Prozess ab, sobald die Antwort gesendet wird, oder bleibt er am Leben, bis der Browser die vollständige Antwort erhält?
Wie lange bleibt Apache am Leben, wenn es einen Prozess für Mod-PHP gibt? Stirbt der Prozess ab, sobald die Antwort gesendet wird, oder bleibt er am Leben, bis der Browser die vollständige Antwort erhält?
Antworten:
Wenn Sie mod-php verwenden, verwenden Sie wahrscheinlich das prefork
MPM, das untergeordnete Prozesse erzeugt, um Anforderungen zu verarbeiten. Die Anzahl und Lebensdauer dieser Kinder gemäß den Anweisungen in Ihrer Hauptdatei apache2.conf
(oder httpd.conf
, abhängig von Ihrer Distribution).
Suchen Sie nach dem Teil, der so aussieht (Ihre Werte können variieren):
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Apache erzeugt StartServers
automatisch Kinder. Diese Prozesse werden im Leerlauf ausgeführt, bis eine Anforderung eingeht. Wenn Kinder beschäftigt sind, werden sie von MaxClients
Kindern erzeugt, um die Last zu bewältigen, und versuchen, MinSpareServers
inaktive Kinder zu verwalten, um neue Anforderungen aufzunehmen. Sobald sich die Dinge beruhigt haben, werden müßige Kinder getötet, bis die Anzahl erreicht ist MaxSpareServers
.
Das Bit, nach dem Sie fragen, wird von bearbeitet MaxRequestsPerChild
. Auf 0 gesetzt bedeutet dies, dass Kinder für immer leben können. Dies ist der Standardwert in den meisten Apache-Installationen. Bei allen anderen Einstellungen bedeutet dies, dass jeder untergeordnete Prozess unabhängig von der aktuellen Last zwangsweise beendet und neu gestartet wird, sobald diese Anzahl von Anforderungen verarbeitet wurde.
Weitere Details zum Prefork MPM finden Sie hier: http://httpd.apache.org/docs/2.2/mod/prefork.html
httpd gibt keinen Prozess für mod_php auf. Es gibt einen Prozess für sich heraus, in den mod_php eingebettet ist. Das Kind wird am Leben bleiben , bis sie erfüllt hat MaxRequestsPerChild
Anfragen. mod_php selbst verarbeitet jede Anforderung für ein PHP-Skript so lange, bis entweder das Skript beendet wird oder das Zeitlimit überschritten wird.