|
През последните няколко дни имаше много проблеми с Nginx 502 в интернет и първоначално мислех, че проблемът е в Nginx, както и при много хора.
Уебът използва архитектурата nginx+php, а уебсайтът не е бил онлайн от дълго време, така че оптимизацията е по същество някаква първоначална конфигурация.
Проверката php-fpm.log откри предупреждения, които на практика съвпаднаха с времето, когато уебсайтът беше спрян. Ще започна тук.
Първоначално също търсих някаква документация, но на следващия ден все още имаше проблем. По-късно проверих конфигурационния файл и го преведох (Baidu), и английската основа не беше добра. PM модулът е подобен на модула на Apache, който е статичен и динамичен.
Много от корекциите, споменати в интернет, са предимно базирани на динамика, но не се казва как да се дефинира този модул. Затова всеки трябва да разгледа по-внимателно конфигурационния файл, когато използва динамичен и статичен PM = статично
; Броят на дъщерните процеси, които трябва да се създадат, когато pm е зададен на "статичен" и
; Максимален брой дъщерни процеси, когато PM е настроен на 'Dynamic' или 'Ondemand'.
; Тази стойност задава лимита на броя на едновременните заявки, които ще бъдат
; сервирано. Еквивалентно на директивата ApacheMaxClients с mpm_prefork.
; Еквивалентно на променливата PHP_FCGI_CHILDREN среда в оригиналния PHP
; CGI. Следните стандарти са базирани на сървър без много ресурси. Недейте
; Забрави да нагласиш PM.* според нуждите си.
; Забележка: Използва се, когато PM е настроен на 'статичен', 'динамичен' или 'по заявка'
; Забележка: Тази стойност е задължителна.
pm.max_деца = 300
; Броят на дъщерните процеси, създадени при стартиране.
; Забележка: Използва се само когато pm е настроен на 'динамично'
; Стандартна стойност: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
;p m.start_servers = 50
; Желаният минимален брой процеси в неактивен сървър.
; Забележка: Използва се само когато pm е настроен на 'динамично'
; Забележка: Задължително е, когато pm е настроен на 'динамично'
;p m.min_spare_servers = 20
; Желаният максимален брой процеси в бездействие на сървъра.
; Забележка: Използва се само когато pm е настроен на 'динамично'
; Забележка: Задължително е, когато pm е настроен на 'динамично'
;pm.max_spare_servers = 500
; Броят секунди, след които процесът в покой ще бъде прекратен.
; Забележка: Използва се само когато PM е настроен на 'ondemand'
; Стандартна стойност: 10s
pm.process_idle_timeout = 10s;
; Броят на заявките, които всеки дъщерен процес трябва да изпълни преди да се възроди.
; Това може да е полезно за заобикаляне на изтичане на памет в библиотеки на трети страни. За
; Безкрайната обработка на заявки уточнява '0'. Еквивалентно на PHP_FCGI_MAX_REQUESTS.
; Стандартна стойност: 0
pm.max_requests = 10240
Червеното поле е начинът да се дефинира и след това параметрите да се зададат според ситуацията на сървъра
Ако използваш статичния параметър pm.max_children, ще работи, останалите няма да работят. Динамиката е обратна.
2G паметта pm.max_children е около 50 включена, което е необходимо за настройка според реалната ситуация.
Ако има някакъв недостатък, бих искал да споделите мнението си, 502 решения.
|