Page 1 of 1

PHP-FPM + nginx -кратковременные падения при нагрузке

Posted: Mon Jan 25, 2016 5:58 pm
by berllc
Добрый день!
Настраиваю dedicated сервер 2 ядра (4 потока), 8 Gb RAM, 512 swap, Centos 7.
Установил Vestacp, связка nginx+php-fpm, APC, база Mariadb.
На сервере десяток сайтов, два с большой посещаемостью, остальные меньше 50 человек в день.
Суммарная посещаемость в районе 10000 просмотров в сутки.

Проблема наблюдается следующая: без какой-либо закономерности сайты (вероятно под нагрузкой, но не факт) начинают выдавать ошибку 500 в течение минут 10-15, затем работают нормально. Если в течение этих 10-15 минут я делаю рестарт php-fpm через панель, то все грузится хорошо.

Перерыл всякие блоги и форумы на предмет настроек php-fpm, везде рекомендации сводятся к глобальному файлу настроек www.conf, но Vestacp создает настройки пулов автоматически под каждый сайт и вот здесь как мне кажется и зарыта моя проблема.
Посоветуйте настройки pm.max_children, pm.start_servers, pm.min_spare_servers и pm.max_spare_servers для каждого пула(с учетом двух более загруженных сайтов) и что в www.conf при этом должно быть, чтобы php-fpm не забивал всю память?
Сейчас www.conf выглядит так:
[www]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user = apache
group = apache
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 8
pm.max_spare_servers = 16
pm.max_requests = 500

В разделе server VESTA показаны следующие цифры по загрузке RAM:
MariaDB: 4109 mb
PHP-FPM: 4927 mb

При рестарте PHP-FPM забирает в районе 3000 Mb, и потом довольно быстро раздувается и лезет в swap.
Еще почему-то висит служба NAMED и она всегда показывает одни и те же цифры что и php-fpm, хотя она выключена (из панели при этом если ее пытаться "выключить" - ничего не происходит, очевидно баг)
В логах ничего особенного нет, кроме вот таких варнингов:

server reached pm.max_children setting (25), consider raising it
seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 7 idle, and 23 total children

База настроена в соответствии с mysqltuner.

Re: PHP-FPM + nginx -кратковременные падения при нагрузке

Posted: Tue Jan 26, 2016 10:23 am
by skurudo
Проблема наблюдается следующая: без какой-либо закономерности сайты (вероятно под нагрузкой, но не факт) начинают выдавать ошибку 500 в течение минут 10-15, затем работают нормально.
При этом какие-то ошибки какие-то в логе php-fpm есть?
500 ошибку стоит рассматривать в виде ошибок сервера, точнее бэкенда - в этой роли у нас как раз php-fpm.

Re: PHP-FPM + nginx -кратковременные падения при нагрузке

Posted: Tue Jan 26, 2016 2:21 pm
by berllc
в том-то и дело что в логах ничего нет, кроме того что я написал ранее:
server reached pm.max_children setting (25), consider raising it
seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 7 idle, and 23 total children.

Еще такое бывает(но я думаю это когда я делаю рестарт службы):
child 3677 started
[26-Jan-2016 09:14:19] WARNING: child 3033 exited on signal 11 (SIGSEGV) after 288.965287 seconds from start
[26-Jan-2016 09:14:19] NOTICE: child 3679 started
[26-Jan-2016 09:14:38] WARNING: child 3029 exited on signal 11 (SIGSEGV) after 308.885845 seconds from start
[26-Jan-2016 09:14:38] NOTICE: child 3685 started
[26-Jan-2016 09:14:52] WARNING: child 3527 exited on signal 11 (SIGSEGV) after 167.554906 seconds from start
[26-Jan-2016 09:14:52] NOTICE: child 3687 started
[26-Jan-2016 09:14:55] WARNING: child 3536 exited on signal 11 (SIGSEGV) after 166.465271 seconds from start
[26-Jan-2016 09:14:55] NOTICE: child 3688 started
[26-Jan-2016 09:14:58] WARNING: child 3546 exited on signal 11 (SIGSEGV) after 163.304133 seconds from start
[26-Jan-2016 09:14:58] NOTICE: child 3689 started
[26-Jan-2016 09:15:00] WARNING: child 2891 exited on signal 11 (SIGSEGV) after 468.862665 seconds from start
[26-Jan-2016 09:15:00] NOTICE: child 3690 started

Re: PHP-FPM + nginx -кратковременные падения при нагрузке

Posted: Mon Feb 01, 2016 6:42 pm
by berllc
Проблема так и остается, сейчас настройки php-fpm для отдельных сайтов выставлены на минимум:
pm = ondemand //(или dynamic, в зависимости от посещаемости сайта)
pm.max_children = 4
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 200
request_terminate_timeout = 120s

В мониторинге named так и висит, повторяя значения php-fpm. Память не разрастается, php-fpm и база стабильно показывают такие цифры:
[img]fod.nichost.ru/vesta.png[/img]

Вот так падения выглядят на исходящем трафике:
[img]fod.nichost.ru/vesta2.png[/img]

куда еще копать, посоветуйте.

Re: PHP-FPM + nginx -кратковременные падения при нагрузке

Posted: Wed Oct 12, 2016 3:46 pm
by ogloblya
berllc wrote:В мониторинге named так и висит, повторяя значения php-fpm. Память не разрастается, php-fpm и база стабильно показывают такие цифры:
куда еще копать, посоветуйте.
Приветствую, подскажите как нибудь решили эту проблему?
Память с такими настройками все так же стабильна?

У меня вот тоже память что то жрет не пойму что, до полного зависания DB.