Kā novērst "Resource temporarily unavailable" kļūdu nginx serverī?

Turpinot lietot mājas lapu cloudhosting.lv, Jūs piekrītat sīkdatņu izmantošanas noteikumiem. Uzzināt vairāk. Piekrītu

Kā novērst "Resursa pagaidu nepieejamība" kļūdu nginx serverī?

Šajā pamācībā tiks apspriesta kombinācija nginx + php-fpm (uzrakstīšanas laikā PHP versija bija 7.3).

Saskaroties ar mazu slodzi uz servera, vietnes sāk izvadīt 502 Bad Gateway kļūdu .Log žurnālos var redzēt līdzīgu attēlu:

[error] 7460#7460: *5365312 connect() to unix:/run/php/php7.3-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream

Šī situācija radās tādēļ, ka operētājsistēma noraida mēģinājumus, ko nginx veic, lai pievienotos Unix soketam. Iemesls var būt tas, ka sasniegts maksimālais savienojumu skaits ar soketu vai maksimālais neatkarīgu savienojumu skaits ar soketu.

Lai pārbaudītu limitus, izpildiet šādu komandu:

sysctl net.core

Mums interesē šādas rindas:

net.core.somaxconn = 128
net.core.netdev_max_backlog = 200

Kļūda radās tāpēc, ka maksimālais savienojumu skaits ir 128, bet maksimālais neatkarīgo savienojumu skaits ir 200.

Lai mainītu limitus, nomainiet rindas failā /etc/sysctl.conf:

net.core.somaxconn = 20000
net.core.netdev_max_backlog = 65535

Parametri tiek piemēroti, izpildot šo komandu:

sysctl -p

Restartējiet php-fpm:

/etc/init.d/php7.3-fpm restart

Lai testētu vietni ar jauno konfigurāciju, izmantojiet loadem utilītu:

./loadem -l 1 https://mansite.ru 200
URL: https://mansite.ru
Clients: 2000
Starting
MaTps 7.81, Tps 7.81, Err 0.00%, Resp Time 0.966
Completed 8 requests in 1.03 seconds
Total TPS: 7.74
Avg. Response time: 0.966
Max Response time: 1.064

Pievērsiet uzmanību Err 0.00%. Tagad tam jābūt vienādam ar 0 (pārbaudiet vietni, pirms maināt sysctl parametrus).