Tracing
Last updated
Last updated
При возникновении узких мест в производительности достаточно много времени тратится на мониторинг и разбор логов. При логировании таймингов отдельных операций в лог-файл, как правило, сложно понять что привело к вызову этих операций, отследить последовательность действий или смещение во времени одной операции относительно другой в разных сервисах.
Для минимизации ручного труда можно воспользоваться одним из инструментов трассировки.
Найти узкие места в производительности как внутри одного сервиса, так и во всем дереве выполнения между всеми участвующими сервисами. Например:
Много коротких последовательных вызовов между сервисами, например, на геокодинг или к базе данных.
Долгие ожидания ввода вывода, например, передача данных по сети или чтение с диска.
Долгий парсинг данных.
Долгие операции, требующие cpu.
Участки кода, которые не нужны для получения конечного результата и могут быть удалены, либо запущены отложенно.
Наглядно понять в какой последовательности что вызывается и что происходит когда выполняется операция.
Видно что, например, Запрос пришел в сервис WS -> сервис WS дополнил данные через сервис R -> дальше отправил запрос в сервис V -> сервис V загрузил много данных из сервиса R -> сходил в сервис P -> сервис Р еще раз сходил в сервис R -> сервис V проигнорировал результат и пошел в сервис J -> и только потом вернул ответ в сервис WS, при этом продолжая в фоне вычислять что-то еще. Без такого трейса или подробной документации на весь процесс очень сложно понять, что происходит, первый раз взглянув на код, да и код разбросан по разным сервисам и скрыт за кучей бинов и интерфейсов.
3. Сбор информации о дереве исполнения для последующего отложенного анализа. На каждом этапе выполнения в трейс можно добавить информацию, которая доступна на данном этапе и дальше разобраться какие входные данные привели к подобному сценарию. Например:
ID пользователя
Права
Тип выбранного метода
Лог или ошибка исполнения
Превращение трейсов в подмножество метрик и дальнейший анализ уже в виде метрик.