Во-первых, уменьшите PHP-FPM max_requests
до 100;Вы хотите, чтобы потоки PHP перезапускались намного раньше, чем 10000 запросов.
Во-вторых, у вас работает только один процесс PHP с большим количеством детей.Это хорошо для разработки, но на производстве вам нужно иметь больше PHP-процессов, в каждом из которых будет меньше дочерних элементов, так что если этот процесс по какой-либо причине завершится, есть другие, которые могут восполнить провал.Таким образом, вместо соотношения 1:50, как сейчас, выберите соотношение 10: 5.Это будет намного более стабильным.
Чтобы достичь этого, вам может понадобиться что-то вроде supervisor для управления вашими процессами PHP.Мы используем это в работе, и это действительно помогло увеличить время безотказной работы и сократить время, которое мы тратим на управление / мониторинг серверов.Вот пример нашей конфигурации:
/ etc / php5 / php-fpm.conf:
[global]
daemonize = no
[www]
listen = /tmp/php.socket
/ etc / supervisor.d / php-fpm.conf:
[program:php]
user=root
command=/usr/sbin/php-fpm -c /etc/php5/php.ini -y /etc/php5/php-fpm.conf
numprocs=10
process_name=%(program_name)s
/ etc / nginx / conf / php.backend:
upstream backend {
server unix:/tmp/php.socket
}
РЕДАКТИРОВАТЬ:
Как и во всех настройках сервера, не полагайтесь на догадки, чтобы отследить, где находятся ваши проблемы.Я рекомендую установить Munin вместе с различными плагинами PHP (-FPM) и Nginx;они помогут вам отслеживать точную статистику по запросам, времени отклика, использованию памяти, обращению к диску, уровням потоков / процессов ... все это важно при отслеживании проблем.
Кроме того, как я уже упоминал в комментарии ниже, добавление кэширования как на стороне сервера, так и на стороне клиента в настройку, даже на скромном уровне, может помочь улучшить работу пользователей, будь тоиспользуя встроенную поддержку кэширования nginx или что-то более конкретное, например, varnishd.Даже самые динамичные сайты / приложения имеют много статических элементов, которые могут храниться в памяти и обслуживаться быстрее.Обслуживание их из кэша может помочь снизить общую нагрузку и обеспечить, чтобы те элементы, которые должны быть динамичными, имели все необходимые ресурсы, когда они им нужны.