Я наблюдаю за приложением PHP с помощью NewRelic, и меня очень смущают некоторые цифры, показанные в обзоре моего приложения.
Мое приложение состоит из веб-приложения PHP, которое с одной стороны передает страницы в веб-браузеры (очевидно :), а с другой — выполняет запросы к бэкэнду Java:
браузер <-> PHP Webapp -> Java Backend
Я точно знаю, что некоторые запросы Java-бэкэнда могут занимать до 15 секунд, что приводит к тому, что полное веб-приложение с точки зрения браузера занимает столько времени.
На панели обзора newrelic (APM> Мое приложение> Мониторинг> Обзор) он говорит, что мое время «сервера приложений» в среднем составляет 1560 мс, а мое «время браузера» — 5,63 с (я включил мониторинг браузера). Кроме того, в разделе «Транзакции» отображаются транзакции, занимающие до 11,6 секунд.
Итак … как эти разные измерения времени связаны между собой? Подводя итог, я имею:
Как я могу понять эти цифры? Я ожидал бы, что «время браузера» будет самым высоким (поскольку оно включает в себя все остальное, как PHP, так и обработку транзакций). Они складываются в некотором роде? Являются ли некоторые из них поломкой других?
Примечание: я знаю, что в newrelic это все о среднем времени относительно анализируемого временного окна, но, тем не менее, это не имеет смысла для меня.
Спасибо!
Ну вот я наконец-то понял это 🙂
Ключевым понятием, которое я здесь упустил, был «процентиль». Позвольте мне объяснить немного.
В своем вопросе я упомянул, что я получаю среднее время отклика 1560 мс, что, по-видимому, не имеет смысла, учитывая тот факт, что нашему бэкэнду всегда приходится обрабатывать около 15 с, чтобы получить ответ. Следующая картинка — это то, что я получаю в «обзоре» моего веб-приложения.
Как видите, среднее время отклика не так уж и плохо. Тем не менее, я также вижу транзакции, которые занимают до 15 секунд.
Затем, если вы развернете селектор «Время ответа веб-транзакций» и выберете знак процента («%»), вы получите график «Проценты». Шахта выглядит следующим образом:
На этом новом графике:
Теперь все начинает обретать смысл. Мои средние запросы на самом деле занимают не более 2 секунд. Но у меня так много запросов, которые выполняются очень быстро (те, которые находятся ниже красной линии), что те, кто занимает невероятное количество времени в 15 секунд, в среднем не заметны. Это очевидно только тогда, когда вы смотрите на длинный хвост ваших выборочных запросов, т.е. 95-й и 99-й процентили.
В завершение это можно подтвердить, выбрав опцию «гистограмма» на графике. Шахта выглядит следующим образом:
Обратите внимание, что подавляющее большинство запросов занимает менее 200 мс, но у нас также есть 8,29% транзакций, для выполнения которых требуется более 7 секунд (и если бы мы могли прокрутить вправо от гистограммы, мы обнаружили бы, что на самом деле запрос занимает более 15 секунд в последние 5% и 1%, из-за анализа процентилей, который мы делали раньше).
(Эта статья указала мне в правильном направлении: https://blog.newrelic.com/2013/10/23/histograms-percentiles-new-relic-style/)
Это долго меня дезориентировало, надеюсь, это кому-нибудь поможет!
Других решений пока нет …