Разработка веб-сайта 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.
Задача ещё не решена.
Других решений пока нет …