Как диагностировать медлительность NGINX / PHP

Разработка веб-сайта NGINX / PHP. Значительное расхождение между временем обработки NGINX и PHP, и я не знаю, как диагностировать.

Вытягивание JPEG с сервера NGINX происходит быстро.

ab -l -c 100 -n 10000 http://blah.com/a_40kb_file.jpg

7 700 запросов в секунду. Журнал NGINX сообщает, что обслуживается от 2 до 8 мс.

Вытягивание главной страницы PHP — другое дело. Это простая форма без графики, поэтому каждое соединение представляет страницу. Каждая загрузка составляет около 3 КБ. Каждая страница отличается, поскольку она содержит случайный токен в форме.

ab -l -c 100 -n 10000 http://blah.com/

900 запросов в секунду. Журнал NGINX сообщает, что обслуживается от 15 мс до 250 мс. Нет сообщений об ошибках от NGINX. PHP-FPM пожаловался на достижение максимального значения pm.max_children. Увеличивается, пока не исчезнет ошибка.

Скрипт PHP записывает время выполнения простым microtime(true) в начале и в конце. Это показывает, что:

При вызове одной страницы время журнала NGINX и время запуска PHP в целом совпадают (примерно от 1 до 2 мс).

При моделируемой нагрузке время NGINX сходит с ума, но время выполнения PHP остается неизменным.

NGINX где-то ждет, чтобы что-то произошло, и я не знаю, как поставить диагноз. Доступны ли какие-либо инструменты / методы?

NGINX.CONF
worker_processes auto;
worker_connections 768;

Платформа разработчика:
1 Core VM. Vbox 6.0. Гость: Ubuntu 18.04. Intel i5-6260U.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]