Как диагностировать медлительность NGINX / PHP - PullRequest
0 голосов
/ 08 января 2019

Разработка веб-сайта 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...