Tracing

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

Для минимизации ручного труда можно воспользоваться одним из инструментов трассировки.

Какие проблемы можно решить с помощью трассировки

  1. Найти узкие места в производительности как внутри одного сервиса, так и во всем дереве выполнения между всеми участвующими сервисами. Например:

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

    • Долгие ожидания ввода вывода, например, передача данных по сети или чтение с диска.

    • Долгий парсинг данных.

    • Долгие операции, требующие cpu.

    • Участки кода, которые не нужны для получения конечного результата и могут быть удалены, либо запущены отложенно.

  2. Наглядно понять в какой последовательности что вызывается и что происходит когда выполняется операция.

Видно что, например, Запрос пришел в сервис WS -> сервис WS дополнил данные через сервис R -> дальше отправил запрос в сервис V -> сервис V загрузил много данных из сервиса R -> сходил в сервис P -> сервис Р еще раз сходил в сервис R -> сервис V проигнорировал результат и пошел в сервис J -> и только потом вернул ответ в сервис WS, при этом продолжая в фоне вычислять что-то еще. Без такого трейса или подробной документации на весь процесс очень сложно понять, что происходит, первый раз взглянув на код, да и код разбросан по разным сервисам и скрыт за кучей бинов и интерфейсов.

3. Сбор информации о дереве исполнения для последующего отложенного анализа. На каждом этапе выполнения в трейс можно добавить информацию, которая доступна на данном этапе и дальше разобраться какие входные данные привели к подобному сценарию. Например:

  • ID пользователя

  • Права

  • Тип выбранного метода

  • Лог или ошибка исполнения

Превращение трейсов в подмножество метрик и дальнейший анализ уже в виде метрик.

Last updated