Разработка веб-сайта NGINX / PHP. Значительное расхождение между временем обработки NGINX и PHP, и я не знаю, как диагностировать.
Быстрое извлечение JPEG с сервера NGINX.
ab -l -c 100 -n 10000 http://blah.com/a_40kb_file.jpg
7700 запросов в секунду. Журнал 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.