GNU/Linux >> Znalost Linux >  >> Linux

502 Chyba špatné brány NGINX [Řešení]

Jak se cítíte, když váš klient WhatsApp vytvoří snímek obrazovky svého webu s nápisem 502 špatná brána NGINX  chyba? Nic nemůže být horší než tohle (pro začátek dne), že? I když si přeji, abyste svůj den nezačínali takhle, vysvětlím vám, jak se zotavit, pokud jste se do takové situace dostali.

Než probereme problém a jeho řešení, rád bych připomněl, že mé hostitelské prostředí je poháněno webovým serverem NGINX s obslužným programem FPM PHP.

Důvod chyby 502 Bad Gateway NGINX

Začal jsem ladit chybu z protokolu chyb NGINX (/var/log/nginx/nginx.log) a našli níže uvedenou chybovou zprávu.

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"

Je zřejmé, že chybová zpráva souvisí s obslužným programem PHP a přesměrovala mě, abych se podíval do protokolu chyb PHP-FPM na adrese /var/log/php-fpm/error.log a všimli si níže uvedené chybové zprávy:

[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

Nyní je jasné, že hlavní proces PHP-FPM není schopen vytvořit nové podřízené procesy kvůli pm.max_children dosažení limitu, což způsobí chybu brány 502.

Jak opravit chybu:server dosáhl nastavení pm.max_children, zvažte zvýšení

Řešením je zvýšit pm.max_children limit na základě specifikací serveru. Všimněte si, že limit slepě nezvyšujte, protože pokud web zaznamená velký provoz, pak se pracovníci nikdy nerecyklují, využití paměti RAM poroste s časem a server bude mít nedostatek paměti.

Proto pm.max_children by měl být opatrně a postupně zvyšován při sledování využití swapu.

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

Zde je 80 MB průměrná váha pracovního procesu PHP-FPM.

Na základě výše uvedeného výpočtu zvyšte hodnotu pm.max_children v příslušném konfiguračním souboru domény PHP-FPM. V mém případě:  /etc/php-fpm.d/techglimpse.conf

pm = ondemand
pm.max_children = 200

Nyní restartujte služby PHP-FPM a NGINX

systemctl restart php-fpm nginx
Poznámka

Filtrujte všechny domény, které byly ovlivněny pomocí pm.max_children a použijte výše uvedená nastavení pouze na ty, kterých se to týká.

Jak najít paměť využívanou aplikacemi

Spusťte níže uvedený příkaz a vyhledejte paměť využívanou příslušnými aplikacemi.

#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

Ve výše uvedeném příkladu používá MySQL téměř 14 % celkové paměti.


Linux
  1. Chyba při instalaci Nginx na Ubuntu 16.04?

  2. Časový limit brány nginx 504

  3. Příkaz conda vyzve k chybě:Špatný interpret:Žádný takový soubor nebo adresář

  1. nginx - 413 entita požadavku je příliš velká

  2. Jak ovlivní chyba jednobitové paměti Linux?

  3. getpwnam(www) se nezdařilo v /etc/nginx/nginx.conf

  1. Jak opravit časový limit brány 504 na serveru Nginx

  2. Nelze najít Module/Load/Conditional.pm [Řešení]

  3. Nelze najít Test/Harness.pm perl Chyba:[Řešení]