История изменений
Исправление
Twissel,
(текущая версия)
:
Когда я фрилансил по этой теме делал так (дистрибутив Убунту):
Определяем среднее потребление памяти одним процессом
ps -ylC php-fpm7.0 --sort:rss | awk '{sum+=$8; ++n} END {print "Tot="sum"("n")";print "Avg="sum"/"n"="sum/n/1024"MB"}'
Далее делал такую инструкцию заказчику
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 .
Может фигню написал, т.к. все это сильно зависит от характера трафика на сервер, см. ссылку выше. Но работало это дело долго и счастливо.
Исправление
Twissel,
:
Когда я фрилансил по этой теме делал так (дистрибутив Убунту):
Определяем среднее потребление памяти одним процессом
ps -ylC php-fpm7.0 --sort:rss | awk '{sum+=$8; ++n} END {print "Tot="sum"("n")";print "Avg="sum"/"n"="sum/n/1024"MB"}'
Далее делал такую инструкцию заказчику
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 из http://www.conf поделить на количество ядер процессора.
5) Перезапускаем наш веб-сервер командами systemctl restart nginx, systemctl restart php-fpm .
Может фигню написал, т.к. все это сильно зависит от характера трафика на сервер, см. ссылку выше. Но работало это дело долго и счастливо.
Исходная версия
Twissel,
:
Когда я фрилансил по этой теме делал так (дистрибутив Убунту):
Определяем среднее потребление памяти одним процессом
ps -ylC php-fpm7.0 --sort:rss | awk '{sum+=$8; ++n} END {print "Tot="sum"("n")";print "Avg="sum"/"n"="sum/n/1024"MB"}'
Далее делал такую инструкцию заказчику
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 из http://www.conf поделить на количество ядер процессора. 5) Перезапускаем наш веб-сервер командами systemctl restart nginx, systemctl restart php-fpm .
Может фигню написал, т.к. все это сильно зависит от характера трафика на сервер, см. ссылку выше. Но работало это дело долго и счастливо.