Задать вопрос

Ограничение по количеству выполняемых процессов (nginx + php-fpm)?

Коллеги добрый день

Дано:
Сервер 12 ядер, 128гб RAM, nginx, php-fpm

Конфиг PHP-FPM
крутиться на одном пуле

listen = /var/run/php5-fpm.sock
pm = dynamic
pm.max_children = 48
pm.start_servers = 12
pm.min_spare_servers = 2
pm.max_spare_servers = 24

status php-fpm
pool: www
process manager: dynamic
start time: 23/Apr/2015:11:10:29 +0300
start since: 3116
accepted conn: 21591
listen queue: 0
max listen queue: 0
listen queue len: 0
idle processes: 24
active processes: 17
total processes: 41
max active processes: 48
max children reached: 2
slow requests: 0

Настройки nginx
user nginx;
worker_processes 12;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 2048;
}

ПРОБЛЕМА
Сервер начинает отдавать 504 ошибку когда TOP показывает следующие показатели:

LA < 1.3
Tasks 1483, 3 running, 1480 sleeping

В логах nginx
2602#0: *37902 upstream timed out (110: Connection timed out) while reading response header from upstream,

Такое поведение начинается когда количество процессов > 1300

В главном скрипте вызывается exec(), в момент когда процессов более 1300, exec() выполняется до таймаута и скрипт обрывается с 504 ошибкой. Такое ощущение, что какое то ограничение не дает запустить новый скрипт через exec и он стоит в очереди.

Вопрос, что необходимо подкрутить?
  • Вопрос задан
  • 3841 просмотр
Подписаться 5 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
opium
@opium
Просто люблю качественно работать
504 это таймаут, логично что скрипты не успевают отработать
правильная стратегия смотреть что происходит со скриптами
временный фикс увеличить все таймауты в нгинксе и пхп
Ответ написан
Комментировать
@zorruch
В логах не может быть все чисто. Смотрите error log у nginx
Ответ написан
ajaxtelamonid
@ajaxtelamonid
Laravel
У меня такое было однажды. Увеличьте число воркеров php-fpm. Их тупо не хватает. UPD увидел комментарий о cli. Это уже не мой случай.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы