Heim > Artikel > Betrieb und Instandhaltung > So lösen Sie den Nginx-Eingabeaufforderung 500 Internal Server Error
Bei vielen gleichzeitigen Verbindungen ist Nginx eine gute Alternative zum Apache-Server. Nginx kann auch als Layer-7-Lastausgleichsserver verwendet werden. Den Testergebnissen zufolge kann Nginx 0.6.31 + PHP 5.2.6 (Fastcgi) mehr als 30.000 gleichzeitigen Verbindungen standhalten, was dem Zehnfachen von Apache in derselben Umgebung entspricht.
Aber viele Leute erhalten 500 Fehler, wenn sie Nginx verwenden. Meiner Meinung nach liegt ein großer Teil der Ursache darin, dass das Handle zum Öffnen der Datei zu klein ist.
Verwenden Sie unter Linux diesen Befehl, um das vom Prozess geöffnete Dateihandle zu erhöhen.
ulimit -shn 51200
Standardmäßig wird nur 1000 verwendet. Wenn die Anzahl der Links gering ist, kann die Verwendung dieser Verarbeitungsmethode effektiv verhindern, dass 500 Fehler auftreten.
Als ich heute die Website besuchte, stieß ich gelegentlich auf eine Fehlerseite mit 500 internen Serverfehlern.
Nachdem ich die relevanten Informationen überprüft hatte, dachte ich, dass dies durch übermäßigen Zugriff und eingeschränkte Systemkernelprozesse verursacht wurde. Die Antwort lautet wie folgt:
$ ulimit -n
11095
Das Programmlimit kann nur 11095 Dateien öffnen. Der Befehl ulimit dient dazu, die Anzahl der Dateideskriptoren festzulegen, die der aktuelle Benutzer in einem Prozess haben kann. Es scheint, dass die Anzahl der simulierten Parallelen zu groß ist um die Anzahl der Parallelitätseinstellungen in nginx.conf anzupassen (der Speicher meines Konfigurationshosts beträgt 2 g und die CPU beträgt 2,8 g).
Kopieren Sie den Code. Der Code lautet wie folgt:
vi /etc/nginx/ nginx.conf [Wurzel @qimutian nginx]# cat /proc/sys/fs/file-max
8192Das Dateisystem ist das größte Die Anzahl der geöffneten Dateien
[root@qimutian nginx]# ulimit -n
1024
Die Programmgrenzen können nur geöffnet werden 1024 Dateien
oder passen Sie die Anzahl der geöffneten Dateien unter „Hinzufügen“ am Ende der Startdatei /etc/rc.d/rc.local dauerhaft an (fügen Sie fs. file-max=8192 am Ende von /etc/sysctl.conf)
ulimit -n 8192
Verwenden Sie ulimit -a. Es wurde festgestellt, dass während der Belastung standardmäßig 1024 geöffnete Dateien nicht überschritten werden dürfen Beim Test gestern ist ein 500-Fehler aufgetreten. Als ich morgens aufwachte, stellte ich fest, dass er wie folgt angepasst wurde.
vi /etc/security/limits.confFügen Sie am Ende der Datei hinzu:
* Soft Nofile 8192
* Hard Nofile 20480
fs.file-max=8192 am Ende von vi / hinzu etc/sysctl.conf
Neu starten, die mit ulimit -n überprüfte Nummer ist bereits 8192
Methode 2 (vorübergehende Verwendung)
Geben Sie ulimit -n 8192 direkt in das Terminal ein und drücken Sie die Eingabetaste und es wird OK sein
500 interner Serverfehler Fehler Ergänzung:
1. Der Festplattenspeicher ist voll.
Verwenden Sie df -k, um zu überprüfen, ob der Festplattenspeicher voll ist. Durch das Freimachen von Festplattenspeicher können 500 Fehler behoben werden. Wenn das Zugriffsprotokoll in Nginx aktiviert ist, ist es am besten, das Zugriffsprotokoll zu schließen, wenn es nicht benötigt wird. Das Zugriffsprotokoll beansprucht viel Festplattenspeicher.
2. Nginx-Konfigurationsdateifehler
Dies bezieht sich nicht auf Grammatikfehler. Wenn Nginx einen Grammatikfehler in der Konfigurationsdatei aufweist, wird beim Start eine Meldung angezeigt. Bei der Konfiguration von Rewrite können 500-Fehler auftreten, wenn einige Regeln nicht ordnungsgemäß gehandhabt werden. Bitte überprüfen Sie Ihre Rewrite-Regeln sorgfältig. Wenn einige Variablen in der Konfigurationsdatei falsch eingestellt sind, kann auch ein 500-Fehler auftreten, z. B. beim Verweisen auf eine Variable ohne Wert.
3. Wenn keines der oben genannten Probleme vorliegt, ist die Anzahl der simulierten Parallelitäten möglicherweise zu groß. Sie müssen die Anzahl der Parallelitätseinstellungen in nginx.conf anpassen Datei /limits.conf und zwei Sätze hinzufügen
Kopieren Sie den Code. Der Code lautet wie folgt:
* Soft Nofile 65535
* Hard Nofile 65535
2 Öffnen Sie /etc/nginx/nginx.conf
Fügen Sie eine Zeile unter worker_processes hinzu
Kopieren Sie den Code. Der Code lautet wie folgt:
worker_rlimit_nofile 65535;
3 Starten Sie Nginx neu und laden Sie die Einstellungen neu.
Code kopieren. Der Code lautet wie folgt:
kill -9 `ps -ef |. grep php | grep -v grep |. awk '{print $2}'`
/ usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -c 100 -u www-data -f /usr/bin/php-cgi
killall -hup nginx
Starten Sie neu und schauen Sie sich dann das Nginx-Fehlerprotokoll an. Es wurde auch kein 500-Fehler gefunden.
4. Es könnte sich um ein Datenbankproblem handeln. Ich habe keine Probleme im Nginx-Protokoll oder im PHP-Protokoll festgestellt. Nach der Korrektur konnte das Problem nicht behoben werdenDas obige ist der detaillierte Inhalt vonSo lösen Sie den Nginx-Eingabeaufforderung 500 Internal Server Error. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!