Рейтинг:0

Предположим, производительность платформы на основе Nginx — ngx_http_stub_status_module

флаг cn

Nginx размещен перед микросервисной архитектурой, о которой у нас нет никакого представления. Мы извлекаем метрики, представленные статус http-заглушки и хотели бы вычислить показатель производительности платформы: мы не можем использовать задержку в нагрузочном тесте, так как хотим сравнить географически разные сайты.

Что мы пробовали до сих пор:

  • Вычислите дельту от общего количества запросов в единицу времени. Проблема: это не отражает производительность, все сайты обрабатывают одинаковое количество запросов (100 запросов на 100 мс)
  • Используйте индикатор ожидающих соединений*

*С этим индикатором мы наблюдаем различное поведение. Две крайности:

Сервер 2012 г. (E5-2620 v1, 24 потока): в среднем 68,62 ожидающих соединения на 100 мс.

Сервер 2021 (AMD EPYC 7642, 96 потоков): в среднем 91,96 ожидающих соединений на 100 мс.

Первый вопрос. Кажется, что шкалу следует читать как «чем выше, тем лучше». Почему? Подробностей в документации нет, но, насколько нам известно, здесь должно появиться соединение, ожидающее ответа. Или этот датчик состоит только из свободных соединений (т.е. уже обслуженных)?

Второй вопрос. В том же нагрузочном тесте метрики принятых/обработанных соединений намного выше на самом последнем сервере (примерно в два раза). Почему? Оба обслуживали одинаковое количество запросов, отправленных пулом из 100 соединений. Что мы видим, так это то, что количество обработанных подключений в начале увеличивается очень быстро, до другого предельного значения в зависимости от архитектуры, а затем прогресс становится довольно линейным. Мы не можем найти никакого объяснения этому поведению, показанному на этом графике: график обработанных соединений

Рейтинг:0
флаг cn

Мы не можем использовать задержку в нагрузочном тесте, так как хотим сравнить географически разные сайты.

Действительно? Время ответа на запросы — это метрика, которая на самом деле соответствует тому, насколько медленно что-то работает для пользователя.Конечно, разные географические регионы могут привести к более сложному статистическому распределению, но его все равно полезно анализировать.

Датчик [Ожидание соединений] следует читать как «чем выше, тем лучше». Почему?

Чтение и запись активных соединений выполняют ввод-вывод, выполняют работу. Ожидание — это поддержание активности, ожидание клиента после того, как он уже выполнил запрос.

При том же уровне запросов в секунду более низкие показатели чтения и записи — это хорошо, потому что это коррелирует с быстрым обслуживанием соединений. Вероятно, это означает большее ожидание клиентов, а значит, и большее количество ожиданий, но есть ограничения на количество подключений.

Второй вопрос. В том же нагрузочном тесте принято/обработано соединение показатели намного выше на самом последнем сервере (примерно в два раза). Почему?

Первые несколько секунд обоих подключений с течением времени немного отличаются, подпрыгивая почти мгновенно. Я не совсем понимаю, почему это происходит, но, возможно, nginx работал дольше перед тестом, поэтому счетчики выше.

Я бы проигнорировал первые несколько секунд как разминку. И, возможно, график запросов в секунду с течением времени, так как может быть легче увидеть тенденции в том, что должно быть прямой линией.

PierreJ avatar
флаг cn
Вы правы, время отклика — полезная метрика. Нам удалось избежать очень сложного статистического распределения, вычислив время отклика с точки зрения nginx (а не с точки зрения клиента) с помощью этого [модуля] (https://github.com/knyar/nginx-lua-prometheus)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.