У меня есть динамический веб-сервис PHP с высокой нагрузкой, который я недавно переместил с Apache2 на Nginx и PHP-FPM. Я обнаружил, что с момента перехода средняя задержка запроса увеличилась с 0,5 до 1 с.
Я не уверен, где находится узкое место в системе, я надеялся уменьшить среднюю задержку, я знаю, что мои машины нет:
Nginx перенаправляет запросы в PHP-FPM через единственный сокет unix.
Вот часть моего файла nginx.conf:
worker_processes 2; # one for each processor
worker_rlimit_nofile 65536;
...
fastcgi_buffers 256 16k;
fastcgi_buffer_size 32k;
fastcgi_max_temp_file_size 0;
proxy_buffer_size 32k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 32k;
и мой php-fpm.conf
listen = /var/run/php5-fpm.sock
listen.backlog = 2048
pm = static
pm.max_children = 64
Что-нибудь выделяется как диковинное или ошибочное?
Использование единственной розетки должно быть нормальным.
Несколько вещей, которые нужно проверить:
Какое максимальное количество дескрипторов файлов на процесс? ulimit -n
Вы можете получить выгоду от увеличения этого.
Включите ведение журнала в php-fpm, чтобы увидеть, сколько времени занимают запросы в соответствии с ним. В pool.d / www.conf:
access.format = %R - %u %t "%m %r%Q%q" %s %f %{mili}d %{kilo}M %C%%
Используйте модуль статуса, чтобы узнать, что происходит внутри nginx: http://wiki.nginx.org/HttpStubStatusModule