Heim > Artikel > Backend-Entwicklung > So beheben Sie den Syntaxfehler in der Berichterstellung mit hoher Parallelität in PHP
Lösung für den von PHP gemeldeten Syntaxfehler mit hoher Parallelität: 1. Überprüfen Sie die Anzahl der konfigurierten Zugriffe oder Verbindungen von Nginx und erhöhen Sie die beiden Parameter von Nginx. 2. Überprüfen Sie, ob der Arbeitsprozess von PHP-FPM ausreichend ist Erhöhen Sie dann die Anzahl der worker_connections-Prozesse. Deaktivieren Sie einfach das aufgezeichnete langsame Protokoll.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, PHP-Version 8.1, Dell G3-Computer.
Wie behebt man den Syntaxfehler bei der Berichterstellung mit hoher Parallelität in PHP?
Nginx+Php High Concurrency Reporting 502, 504 Problemlösung:
Kürzlich Unterstützung des Unternehmens bei der Optimierung des PHP-Projekts. Baidu beim Optimieren. Dieses Projekt hat eine große Anzahl von Besuchen (durchschnittlich mehr als 80.000 Anfragen pro Minute).
Verwendete drei AWS-Server. Zwei 8-Core 16G und ein 4-Core 16G. Der Kleine führt Nginx aus und führt eine kleine Anzahl von PHP-FPM-Prozessen aus. Im Prinzip aufstellen und aufhängen. Die Zugänge sind alle 502 und 504. Weil es kein Problem mit dem Projekt gibt und der Test bereits durchgeführt wurde. Dann fing ich an, auf Baidu nach Problemen zu suchen.
1. Es besteht der Verdacht, dass die Anzahl der Nginx-Konfigurationszugriffe oder die Anzahl der Verbindungen zu gering ist, um sie zu verarbeiten, und dann die beiden Parameter von Nginx erhöhen.
Die maximale Anzahl von Verbindungen, die jeder Prozess zulässt, beträgt worker_processes*worker_connections
worker_connections 5000;
Die maximale Anzahl von Dateideskriptoren, die von einem Nginx-Prozess geöffnet werden offene Dateien (ulimit - n) Teilen Sie durch die Anzahl der Nginx-Prozesse. . Aber als ich es getestet habe, gab es überhaupt keine Reaktion.
2. Es wird vermutet, dass es sich um ein PHP-Konfigurationsproblem handelt.
Bestätigen Sie, ob der Worker-Prozess von PHP-FPM ausreicht. Wenn er nicht ausreicht, bedeutet dies, dass er nicht aktiviert ist verarbeitet
worker_rlimit_nofile 20000;
Wenn die beiden oben genannten Werte nahe beieinander liegen, können Sie erwägen, die Anzahl der worker_connections-Prozesse zu erhöhen
und die Anzahl der PHP-Prozesse in php-fpm.conf zu ändern. Egal, ob Sie diese Parameter erhöhen oder verringern, es wird nicht funktionieren. . . . Verzweifelt!
Die Protokollebene log_level = debug in php-fpm.conf wurde geändert. Ich habe einen Fehler in der Datei „error_log“ gesehen:
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k;
Also habe ich diesen Fehler erneut gegoogelt. Finden Sie den Artikel (http://www.mamicode.com/info-detail-1488604.html). Oben wurde gesagt, dass das aufgezeichnete langsame Protokoll deaktiviert werden muss; slowlog = /var/log/php-fpm/slow.log = 15s. Zu diesem Zeitpunkt wurde mir klar, dass PHP auch langsame Anfragen während der Zugriffsprotokolle aufzeichnet. Öffnen Sie dann die langsame Protokolldatei. Es wurde festgestellt, dass alle Fehlerprotokolle dadurch verursacht wurden, dass PHP Redis anforderte. . .
Die Ursache des Problems ist gefunden. Wenn PHP Redis-Daten anfordert, sollten zu viele Verbindungen angefordert werden. Probleme, die dadurch verursacht wurden, dass Redis keine Verbindung herstellen konnte. . Da das Geschäft hier relativ komplex ist, ist der Redis-Schlüssel in mehrere Felder unterteilt. Bei der Abfrage wird eine Fuzzy-Abfrage verwendet. All dies führt zu einer Verringerung der Leistung von Redis und eine große Anzahl nachfolgender Anforderungen kann keine Verbindung zu Redis herstellen. Weil der Code für die Verlinkung zu Redis von mir geändert wurde. . Also habe ich den ursprünglichen Code zum Anfordern von MySQL wiederhergestellt. .
Derzeit läuft das Projekt normal und die CPU jedes Servers ist grundsätzlich nahezu 100 %. Ich mache mir Sorgen, dass es Probleme geben wird, die CPU voll sein wird und die MySQL-Verbindungsanfrage dem nicht standhalten kann. . . Lassen Sie es uns später optimieren! ! ! !
Empfohlenes Lernen: „
PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonSo beheben Sie den Syntaxfehler in der Berichterstellung mit hoher Parallelität in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!