Überblick Wenn beim Zugriff auf einen Onlinedienst ein Fehler 500 oder 502 auftritt, sind eine Notfallbearbeitung und Fehlerbehebung erforderlich. Was soll ich tun? Sie können das Problem lokalisieren, indem Sie einige Fehlerprotokolle analysieren oder den PHP-FPM-Prozess verfolgen. nginx Fehlerprotokoll nginx error_log ist in der nginx-Konfigurationsdatei definiert Server { hören Sie 80; Servername localhost; Wurzel /var/www; Zugriffsprotokoll /Benutzer/jiao/logs/default.access.log; Fehlerprotokoll /Benutzer/jiao/logs/default.error.log; Standort / { index.html index.htm index.php; Autoindex aktiviert; } Standort = /info { 127.0.0.1 zulassen; alles leugnen; umschreiben (.*) /.info.php; } Standort ~ \.php$ { Wurzel /var/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; einschließen /usr/local/etc/nginx/fastcgi_params; } } Fehlerprotokoll anzeigen
Es wird festgestellt, dass die Meldung „Verbindung vom Peer zurückgesetzt“ angezeigt wird. Die Verbindung wird zurückgesetzt. Zu diesem Zeitpunkt können Sie das Fehlerprotokoll von php-fpm überprüfen, um das Problem weiter zu analysieren. php-fpm Fehlerprotokoll Das error_log von php-fpm wird in der Konfiguration der Datei php-fpm.conf definiert ; Fehlerprotokolldatei ; Wenn es auf "syslog" eingestellt ist, wird das Protokoll an syslogd gesendet, anstatt geschrieben zu werden ; in einer lokalen Datei. ; Hinweis: Das Standardpräfix ist /usr/local/var ; Standardwert: log/php-fpm.log Fehlerlog = log/php-fpm.log Der Inhalt von error_log ist wie folgt ➜ tail /usr/local/var/log/php-fpm.log [17-Jul-2019 10:49:54] HINWEIS: [pool www] child 81948 gestartet [17-Jul-2019 11:08:18] WARNUNG: [Pool www] Kind 77537, Skript '/var/www/index.php' (Anforderung: "GET /index.php") Zeitüberschreitung bei der Ausführung (3,801267 Sek.), wird beendet [17-Jul-2019 11:08:18] WARNUNG: [Pool www] Kind 77537 wurde beim Signal 15 (SIGTERM) nach 1503,113967 Sekunden ab Start beendet. [17-Jul-2019 11:08:18] HINWEIS: [pool www] child 94339 gestartet Sie können sehen, dass bei der Anforderung der Datei /var/www/index.php eine Zeitüberschreitung aufgetreten ist. dtruss dtruss ist ein dynamischer Tracking-Befehl, der Prozesse basierend auf PID und Namen verfolgen kann Verwenden Sie dtruss in der Mac-Umgebung und strace und pstack in der Linux-Umgebung ➜ dFachwerk VERWENDUNG: dtruss [-acdefholLs] [-t Systemaufruf] { -p PID | -n Name | Befehl | -W Name } -p PID # diese PID untersuchen -n Name # diesen Prozessnamen untersuchen -t syscall # nur diesen Systemaufruf untersuchen -W name # auf einen Prozess mit diesem Namen warten -a # alle Details drucken -c # Anzahl der Systemaufrufe drucken -d # relative Zeiten drucken (us) -e # verstrichene Zeit ausgeben (us) -f # Kindern folgen -l # erzwingt das Drucken von pid/lwpid -o # CPU-Zeiten ausdrucken -s # Stapel-Backtraces drucken -L # pid/lwpid nicht drucken -b bufsize # dynamische variable Puffergröße Zum Beispiel, dtruss df -h # "df -h" ausführen und untersuchen dtruss -p 1871 # PID 1871 untersuchen dtruss -n tar # alle Prozesse mit dem Namen "tar" untersuchen dtruss -f test.sh # test.sh ausführen und untergeordneten Elementen folgen Ablaufverfolgung für php-fpm: Besuchen Sie jetzt die Webseite und Sie können den Tracking-Inhalt sehen. 21416/0x3479b6: 1559 63 3 getrusage(0x0, 0x7FFEE1EC0760, 0x0) = 0 0 21416/0x3479b6: 1561 4 0 getrusage(0xFFFFFFFFFFFFFFFF, 0x7FFEE1EC0760, 0x0) = 0 0 21416/0x3479b6: 1627 77 17 Umfrage (0x7FFEE1EC08C0, 0x1, 0x1388) = 1 0 dtrace: Fehler bei aktivierter Sonden-ID 2174 (ID 159: syscall::read:return): ungültiger Kernelzugriff in Aktion Nr. 13 bei DIF-Offset 68 dtrace: Fehler bei aktivierter Sonden-ID 2174 (ID 159: syscall::read:return): ungültiger Kernelzugriff in Aktion Nr. 13 bei DIF-Offset 68 dtrace: Fehler bei aktivierter Sonden-ID 2174 (ID 159: syscall::read:return): ungültiger Kernelzugriff in Aktion Nr. 13 bei DIF-Offset 68 dtrace: Fehler bei aktivierter Sonden-ID 2174 (ID 159: syscall::read:return): ungültiger Kernelzugriff in Aktion Nr. 13 bei DIF-Offset 68 dtrace: Fehler bei aktivierter Sonden-ID 2174 (ID 159: syscall::read:return): ungültiger Kernelzugriff in Aktion Nr. 13 bei DIF-Offset 68 21416/0x3479b6: 1872 29 24 lstat64("/var/www/index.php\0", 0x7FFEE1ECFF38, 0x0) = 0 0 21416/0x3479b6: 1884 9 6 lstat64("/var/www\0", 0x7FFEE1ECFDF8, 0x0) = 0 0 21416/0x3479b6: 1889 6 3 lstat64("/var\0", 0x7FFEE1ECFCB8, 0x0) = 0 0 21416/0x3479b6: 1899 12 8 readlink("/var\0", 0x7FFEE1ED0090, 0x400) = 11 0 21416/0x3479b6: 1905 6 4 lstat64("/private/var\0", 0x7FFEE1ECFB78, 0x0) = 0 0 21416/0x3479b6: 1917 6 3 lstat64("/private\0", 0x7FFEE1ECFA38, 0x0) = 0 0 21416/0x3479b6: 2178 18 14 stat64("/var/www/.user.ini\0", 0x7FFEE1ED0240, 0x0) = -1 Fehler#2 21416/0x3479b6: 2217 5 1 setitimer(0x2, 0x7FFEE1ED07E0, 0x0) = 0 0 21416/0x3479b6: 2225 4 0 Signatur(0x1B, 0x7FFEE1ED0788, 0x7FFEE1ED07B0) = 0 0 21416/0x3479b6: 2237 5 1 sigprocmask(0x2, 0x7FFEE1ED0804, 0x0) = 0x0 0 21416/0x3479b6: 3643 48 40 open_nocancel(".\0", 0x0, 0x1) = 5 0 21416/0x3479b6: 3648 7 3 fstat64(0x5, 0x7FFEE1ED0110, 0x0) = 0 0 21416/0x3479b6: 3653 7 2 fcntl_nocancel(0x5, 0x32, 0x10F252158) = 0 0 21416/0x3479b6: 3661 12 7 close_nocancel(0x5) = 0 0 21416/0x3479b6: 3670 10 7 stat64("/usr/local/var\0", 0x7FFEE1ED0080, 0x0) = 0 0 21416/0x3479b6: 3681 11 8 chdir("/var/www\0", 0x0, 0x0) = 0 0 21416/0x3479b6: 3698 4 0 setitimer(0x2, 0x7FFEE1ED02D0, 0x0) = 0 0 21416/0x3479b6: 3710 6 3 fcntl(0x3, 0x8, 0x10F3FD858) = 0 0 21416/0x3479b6: 3733 9 6 stat64("/private/var/www/index.php\0", 0x7FFEE1ECFF10, 0x0) = 0 0 74904/0x332630: 723125 1073381 19 kevent(0x9, 0x0, 0x0) = 0 0 74902/0x332629: 770666 1073387 17 kevent(0x8, 0x0, 0x0) = 0 0 74904/0x332630: 723165 1061954 20 kevent(0x9, 0x0, 0x0) = 0 0 74902/0x332629: 770709 1061954 20 kevent(0x8, 0x0, 0x0) = 0 0 74904/0x332630: 723201 1074786 16 kevent(0x9, 0x0, 0x0) = 0 0 74902/0x332629: 770747 1074783 16 kevent(0x8, 0x0, 0x0) = 0 0 74904/0x332630: 723229 1069141 13 kevent(0x9, 0x0, 0x0) = 0 0 74902/0x332629: 770777 1069145 11 kevent(0x8, 0x0, 0x0) = 0 0 21416/0x3479b6: 3942 3902233 7 __semwait_signal(0x703, 0x0, 0x1) = -1 Fehler#4 74902/0x332629: 770814 103 25 Kill(21416, 15) = 0 0 dtrace: Fehler bei aktivierter Sonden-ID 2172 (ID 161: syscall::write:return): ungültiger Kernelzugriff in Aktion Nr. 13 bei DIF-Offset 68 dtrace: Fehler bei aktivierter Sonden-ID 2172 (ID 161: syscall::write:return): ungültiger Kernelzugriff in Aktion Nr. 13 bei DIF-Offset 68 74902/0x332629: 771325 7 2 sigreturn(0x7FFEE1ECFC40, 0x1E, 0xC1A4B78E0404663A) = 0 Err#-2 74902/0x332629: 771336 7 3 kevent(0x8, 0x0, 0x0) = 1 0 dtrace: Fehler bei aktivierter Sonden-ID 2174 (ID 159: syscall::read:return): ungültiger Kernelzugriff in Aktion Nr. 13 bei DIF-Offset 68 74902/0x332629: 771352 11 7 wait4(0xFFFFFFFFFFFFFFFF, 0x7FFEE1ED0748, 0x3) = 21416 0 dtrace: Fehler bei aktivierter Sonden-ID 2172 (ID 161: syscall::write:return): ungültiger Kernelzugriff in Aktion Nr. 13 bei DIF-Offset 68 74902/0x332629: 773511 1957 1899 fork() = 28060 0 28060/0x3754c5: 125: 0: 0 fork() = 0 0 28060/0x3754c5: 128 9 2 bsdthread_register(0x7FFF6774C418, 0x7FFF6774C408, 0x2000) = -1 Fehler#22 dtrace: Fehler bei aktivierter Sonden-ID 2172 (ID 161: syscall::write:return): ungültiger Kernelzugriff in Aktion Nr. 13 bei DIF-Offset 68 74902/0x332629: 773737 4 1 wait4(0xFFFFFFFFFFFFFFFF, 0x7FFEE1ED0748, 0x3) = 0 0 74902/0x332629: 773742 6 3 lesen(0x5, "\0", 0x1) = -1 Err#35 28060/0x3754c5: 320 4 0 getpid(0x0, 0x0, 0x0) = 28060 0 28060/0x3754c5: 328 7 2 __mac_syscall(0x7FFF67758A17, 0x4, 0x7FFEE1ED0208) = -1 Fehler#45 28060/0x3754c5: 332 5 2 csops(0x6D9C, 0xB, 0x7FFEE1ED0248) = -1 Fehler#22 28060/0x3754c5: 755 14 11 dup2(0x1, 0x2, 0x0) = 2 0 28060/0x3754c5: 797 89 22 schließen(0x4) = 0 0 28060/0x3754c5: 806 11 6 dup2(0x7, 0x0, 0x0) = 0 0 28060/0x3754c5: 817 4 0 geteuid(0x0, 0x0, 0x0) = 501 0 28060/0x3754c5: 820 3 0 schließen(0x5) = 0 0 28060/0x3754c5: 821 3 0 schließen(0x6) = 0 0 28060/0x3754c5: 824 5 1 Signatur(0xF, 0x7FFEE1ED0688, 0x0) = 0 0 28060/0x3754c5: 825 3 0 Signatur(0x2, 0x7FFEE1ED0688, 0x0) = 0 0 28060/0x3754c5: 827 3 0 Signatur(0x1E, 0x7FFEE1ED0688, 0x0) = 0 0 28060/0x3754c5: 828 3 0 Signatur(0x1F, 0x7FFEE1ED0688, 0x0) = 0 0 28060/0x3754c5: 829 3 0 Signatur(0x14, 0x7FFEE1ED0688, 0x0) = 0 0 28060/0x3754c5: 830 3 0 Signatur(0x3, 0x7FFEE1ED0688, 0x0) = 0 0 28060/0x3754c5: 1043 3 0 schließen(0x7) = 0 0 Sie können die ausgeführten Funktionen unten im System sehen, z. B. lstat64 zum Abrufen von Dateiinhaltsinformationen, kill(21416, 15) zum Beenden des php-fpm-Prozesses und fork() zum Erstellen eines neuen php-fpm-Prozesses. Wenn Sie interessiert sind, können Sie die Rolle jeder Anweisung eingehend studieren. siehe https://www.jb51.net/article/165773.htm Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Best Practices zum Teilen von React-Code
>>: Methode zur Wiederherstellung von Betriebs- und Wartungsdaten der MySQL-Datenbank
Welche Vorteile bietet das Erlernen von HTML? 1: ...
Dieser Artikel veranschaulicht anhand von Beispie...
Die Centos8-Distribution wird über die BaseOS- un...
Im Forum fragen Internetnutzer oft: „Kann ich den...
1. Laden Sie das Axios-Plugin herunter cnpm insta...
Was ich kürzlich gelernt habe, beinhaltet Kenntni...
In diesem Artikel wird erklärt, wie Sie MySQL aus...
Was ist HTML? HTML ist eine Sprache zur Beschreib...
Wenn bei der tatsächlichen Projektentwicklung die...
Vorwort Ich habe vor Kurzem :first-child in einem...
Lassen Sie uns kurz die Konfiguration von Server ...
Fügen Sie einfach den folgenden Code hinzu, um die...
In diesem Artikel wird der spezifische Code von N...
Vorwort Ich habe mir die zuvor veröffentlichten A...
Manchmal müssen Sie bestimmte Abhängigkeiten im B...