GNU/Linux >> Linux Esercitazione >  >> Linux

502 Errore gateway errato NGINX [Soluzione]

Come ti senti quando il tuo cliente riceve su WhatsApp uno screenshot del suo sito web che dice 502 bad gateway NGINX  errore? Niente può essere peggio di questo (per iniziare la giornata), vero? Anche se vorrei che tu non iniziassi la giornata in quel modo, ti spiegherò come riprenderti se ti trovassi in quella situazione.

Prima di discutere il problema e la sua soluzione, vorrei ricordare che il mio ambiente di hosting è alimentato dal server Web NGINX con un gestore PHP FPM.

Motivo dell'errore 502 Bad Gateway NGINX

Ho iniziato a eseguire il debug dell'errore dal registro degli errori di NGINX (/var/log/nginx/nginx.log) e ho trovato il seguente messaggio di errore.

2019/12/11 04:30:43 [error] 27570#27570: *48599 connect() to unix:/var/run/php-fpm/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 17.58.98.98, server: techglimpse.com, request: "GET /pure-css3-shapes/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:", host: "techglimpse.com"

È evidente che il messaggio di errore è correlato al gestore PHP e che mi ha reindirizzato a esaminare il registro degli errori PHP-FPM in /var/log/php-fpm/error.log e ho notato il seguente messaggio di errore:

[08-Dec-2019 03:30:01] NOTICE: error log file re-opened
[10-Dec-2019 21:00:16] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it

Ora è chiaro che il processo master PHP-FPM non è in grado di generare nuovi processi figlio a causa di pm.max_children raggiungimento del limite, causando 502 errori di gateway non validi.

Come correggere l'errore:il server ha raggiunto l'impostazione pm.max_children, considera di aumentarla

La soluzione è aumentare il pm.max_children limite in base alle specifiche del server. Nota, non aumentare alla cieca il limite, perché se il sito Web riceve un traffico enorme, i lavoratori non vengono mai riciclati, l'utilizzo della RAM aumenterà indefinitamente nel tempo e il server sarà in condizioni di memoria insufficiente.

Pertanto, pm.max_children dovrebbe essere aumentato in modo accurato e graduale durante il monitoraggio dell'utilizzo dello scambio.

pm.max_children = ((total RAM in MB) - (RAM usage by MySQL and others taken together in MB)) / 80
Nota

Qui 80 MB è il peso medio di un processo di lavoro PHP-FPM.

Sulla base del calcolo precedente, aumentare il valore pm.max_children nel rispettivo file di configurazione del dominio di PHP-FPM. Nel mio caso:  /etc/php-fpm.d/techglimpse.conf

pm = ondemand
pm.max_children = 200

Ora riavvia i servizi PHP-FPM e NGINX

systemctl restart php-fpm nginx
Nota

Filtra tutti i domini interessati da pm.max_children e applica le impostazioni di cui sopra solo a quelle interessate.

Come trovare la memoria utilizzata dalle applicazioni

Esegui il comando seguente per trovare la memoria utilizzata dalle rispettive applicazioni.

#ps -o pid,user,%mem,command ax | sort -b -k3 -r

PID USER %MEM COMMAND
1355 mysql 14.5 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
543 root 0.3 /usr/lib/systemd/systemd-journald
9254 nginx 0.3 php-fpm: pool www
9251 nginx 0.3 php-fpm: pool www

Nell'esempio sopra, MySQL utilizza quasi il 14% della memoria totale.


Linux
  1. nginx - 413 Entità richiesta troppo grande

  2. Come risolvere il timeout del gateway 504 nel server Nginx

  3. Errore:convalida md5 non riuscita per PyYAML-3.11.zip possibile problema di download? [Soluzione]

  4. Impossibile individuare Modulo/Carico/Condizionale.pm [Soluzione]

  5. Impossibile individuare Test/Harness.pm perl Errore:[Soluzione]

Correzione dell'errore Nginx:413 Entità richiesta troppo grande

Integrazione del gateway SMS PlaySMS Kannel su NGINX+Debian

Come riparare le connessioni di lavoro non sono sufficienti errori su Nginx

Come risolvere il timeout del gateway 504 su Nginx

Come correggere l'errore 502 Bad Gateway su Nginx

Errore:errato comando "nospoof on" nel file /etc/host.conf