Ich führe Apache2 mit mpm_prefork auf einem MediaTemple (dv) -Server aus. In letzter Zeit wurden keine wesentlichen Änderungen an meiner Serverkonfiguration vorgenommen. httpd.conf ist derzeit auf Folgendes eingestellt:
MaxKeepAliveRequests 200
KeepAliveTimeout 15
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 10
MaxClients 200
MaxRequestsPerChild 4000
</IfModule>
Kurz vor einem vollständigen Apache-Absturz wird jedoch der folgende Fehler angezeigt:
[Thu Jun 04 18:30:24 2009] [warn-phpd] mmap cache can't open /var/www/vhosts/mydomain.com/httpdocs/filename.php - Too many open files in system (pid 19873)
Ich ärgere mich darüber, diesen Server zu babysitten, um ihn neu zu starten, wenn Apache abstürzt. Hilfe?
linux
centos
apache-2.2
Eric Martindale
quelle
quelle
Antworten:
Ich schlage vor, Sie versuchen, eine Zeile wie diese ulimit -n 16384 am Anfang der Datei / etc / default / apache2 hinzuzufügen und dann neu zu starten.
Siehe auch diesen Link .
quelle
von 'man proc':
Die zweite Zahl ist einen Blick wert, um festzustellen, ob die erste Zahl das ist, was Sie erhöhen müssen. Wenn ja, können Sie es in Ihrer /etc/sysctl.conf festlegen mit:
Beachten Sie, dass dies die Sätze Systemgrenze; Das Limit pro Benutzer wird mit 'ulimit' festgelegt, mit dem Sie bereits vertraut waren.
quelle
Überprüfen Sie lsof, um zu sehen, was tatsächlich los ist. Das Überschreiten eines unangemessen hohen Grenzwerts ist häufig auf ein Leck oder einen anderen Fehler zurückzuführen.
quelle
MediaTemple verwendet die Virtuozzo- Virtualisierungstechnologie? Virtuozzo basiert auf OpenVZ. In OpenVZ ist die Anzahl der geöffneten Dateien begrenzt. Vielleicht hat Ihr Container das Limit erreicht?
Führen Sie diesen Befehl aus (wenn Sie können):
cat / proc / user_beancounters
und sehen Sie sich die Werte der Numfile-Ressource an.
quelle
Versuchen Sie, "ulimit -n 8192" auszuführen, bevor Sie Apache starten. Es läuft wahrscheinlich in das maximale Limit für offene Dateien.
quelle
Das ist wahrscheinlich genau das, wonach es sich anhört - auf Ihrem Server sind mehr Dateien geöffnet, als der Kernel konfiguriert hat.
Ich nehme an, Sie haben einen gemeinsam genutzten Server? Wenn Sie root auf dem Server haben, können Sie das Limit für den Webserverbenutzer mit ulimit -n auf das in / proc / sys / fs / file-max konfigurierte Maximum erhöhen, aber für einen gemeinsam genutzten Server müssen Sie dies wahrscheinlich tun Sprechen Sie mit Ihrem Dienstanbieter.
Es ist auch möglich, dass der Server, auf dem Sie sich befinden, überfüllt ist, vorausgesetzt, Sie teilen ihn. In diesem Fall muss MediaTemple einige von Ihnen durcheinander bringen.
Haben Sie in letzter Zeit Ihrer Webpräsenz neue Funktionen hinzugefügt oder hat Ihr Datenverkehr stark zugenommen?
quelle
Ich habe mein Problem gelöst, indem ich Folgendes zu / usr / sbin / apachectl hinzugefügt habe:
Das Problem scheint sich zumindest in den letzten 12 Stunden beruhigt zu haben.
quelle