Добрый день, подскажите пожалуйста какой режим работы php-fpm лучше выбрать , сейчас стоит динамика, но есть подозрения что процессы текут и через какое то время перезагружаются, в следствии чего пользователь получает резко 502, после перезагрузки страницы все хорошо, так как дочерний процесс рестартонулся.
ondemand в этом плане на бумаге выглядит вроде как надежнее, он создает процесс только тогда когда нужно и отключает его когда запросы перестают идти, а что вы думаете по этому поводу?
Php-fpm поставлен из офиц. репозитория ОС? Много расширений (extensions) включено?
SIGBUS означает что проблема с памятью, например если неофиц. пакет или какие-либо из расширений некорректно отрабатывают.
Я бы посоветовал настроить конфиги как тут Как избавиться от SIGBUS при работе php-fpm?
Только при настройке конфига fpm смотрите, чтобы кол-во процессов было настроено в соответствии с тем, сколько у вас памяти на сервере и сколько в среднем кушает child. Рассчитать оптимальное кол-во может помочь эта статья myshell.co.uk/blog/2012/07/adjusting-child-process...
Владимир Ревякин, смотрите: в режиме dynamic fpm будет рестартить процесс после обслуживания определенного числа запросов (директива pm.max_requests в конфиге fpm pool);
в режиме ondemand будет генерить процессы "по требованию" и рестартить незанятые процессы (idle child) по таймауту или по достижению max_requests.
Судя по логу прежде чем произошла ошибка процесс работал 26412/(60^2)=7.33 часов - это много. Ваш pm.max_requests установлен в слишком больше значение для режима dynamic. Попробуйте снизить его так, чтобы был рестарт хотя бы раз в 15 минут. Если у вас все логи об ошибке упираются в какой-нибудь memory leak (child'ы работают часы прежде чем отдать sigbus), это решит проблему.
Если проблема не решится: надо понять, с чем связана ошибка: с логикой ваших скриптов или с чем-то другим. Если с логикой скриптов - правите логику скриптов. Если с чем-то другим - это может быть какое-нибудь дополнение php (apc часто грешит проблемами с памятью), конфиги (хотя вы сказали что все настроено), ограничения коннекта на связке веб-сервер - php-fpm (если у вас связь через файловый unix сокет, попробуйте сделать через сетевой, т.е. tcp 9000 порт), или какая-нибудь мгновенная утечка (сделайте free -m и htop и посмотрите, сколько у вас свободной RAM).