MyTetra Share
Делитесь знаниями!
Советы по настройке NGinx и php-fpm
01.04.2019
11:52
Текстовые метки: nginx, php-fpm, оптимизация, память, процессор
Раздел: Компьютер - Linux - Сеть в Linux - nginx

Когда я фрилансил по этой теме делал так (дистрибутив Убунту). Определяем среднее потребление памяти одним процессом:



ps -ylC php-fpm7.0 --sort:rss | awk '{sum+=$8; ++n} END {print "Tot="sum"("n")";print "Avg="sum"/"n"="sum/n/1024"MB"}'



В зависимости от дистрибутива, вместо php-fpm7.0, возможно, надо будет написать, php5-fpm или php-fpm5.6, или нечно подобное. В ответ будет выдан средний размер инстанса одного php-fpm веркера:



Tot=158952(7)

Avg=158952/7=22.1752MB



Далее делал такую инструкцию заказчику:

1) Исходим из того, что размер процесса php-fpm в среднем равен 40 Мб (для ваших сайтов). Делим количество оперативной памяти на сервере на это значение получаем максимальное количество процессов, которое может запуститься на данной конфигурации при полной загрузке;

2) Записываем 75-80% от значения максимального количества процессов в параметр pm.max_children в файле /etc/php/7.0/fpm/pool.d/www.conf ;

3) В этом же файле меняем значение по-умолчанию pm = dynamic на ondemand . Таким образом мы указали, что воркеры php-fpm будут создаваться только тогда, когда это необходимо. Т.е. они не будут попусту отъедать ОЗУ, ожидая подключения пользователя;

4) Значение pm.max_children в конфигурационных файлах остальных хостов (сайтов) устанавливаем как pm.max_children из

www.conf


поделить на количество ядер процессора.

5) Перезапускаем наш веб-сервер командами systemctl restart nginx, systemctl restart php-fpm .


Может фигню написал, т.к. все это сильно зависит от характера трафика на сервер, см. ссылку выше. Но работало это дело долго и счастливо.


Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования