Оптимизация производительности начинается с определения ключевых показателей, обычно связанных с задержкой и пропускной способностью. Добавление мониторинга для сбора и отслеживания этих показателей позволяет выявить слабые места в приложении. С помощью показателей можно оптимизировать кампании, чтобы повысить показатели эффективности.
Кроме того, многие инструменты мониторинга позволяют настраивать оповещения для ваших показателей, чтобы вы получали уведомления о достижении определенного порогового значения. Например, вы можете настроить оповещение, которое будет отправляться, если доля неудачных запросов превысит нормальный уровень более чем на X%. Инструменты мониторинга помогут вам определить, как выглядит нормальная производительность, и выявить необычные всплески задержки, количества ошибок и других ключевых показателей. Возможность отслеживать эти показатели особенно важна в критические для бизнеса периоды или после того, как в рабочую среду был добавлен новый код.
Как определить показатели задержки
Сделайте интерфейс максимально отзывчивым. Помните, что пользователи предъявляют более высокие требования к мобильным приложениям. Задержку также следует измерять и отслеживать для бэкенд-служб, поскольку она может привести к проблемам с производительностью, если ее не контролировать.
Рекомендуем отслеживать следующие показатели:
- Продолжительность запроса
- Продолжительность запроса с детализацией по подсистемам (например, вызовам API)
- Длительность задания
Определение показателей пропускной способности
Пропускная способность – это общее количество запросов, обработанных за определенный период времени. На пропускную способность может влиять задержка подсистем, поэтому для ее повышения может потребоваться оптимизация задержки.
Вот несколько показателей, которые мы рекомендуем отслеживать:
- количество запросов в секунду
- Объем данных, передаваемых за секунду.
- Количество операций ввода-вывода в секунду
- использование ресурсов, например ЦП или памяти;
- Размер очереди обработки, например количество тем издатель-подписчик или потоков.
Не только среднее значение
Распространенная ошибка при оценке эффективности – учитывать только среднее значение. Это полезно, но не дает представления о распределении задержки. Лучше отслеживать процентили эффективности, например 50-й, 75-й, 90-й и 99-й процентили для определенного показателя.
Обычно оптимизация выполняется в два этапа. Сначала оптимизируйте задержку на уровне 90-го процентиля. Затем рассмотрим 99-й процентиль, также известный как хвостовая задержка: небольшая часть запросов, выполнение которых занимает гораздо больше времени.
Мониторинг на стороне сервера для получения подробных результатов
Для отслеживания показателей обычно предпочтительно профилирование на стороне сервера. Серверную часть обычно гораздо проще настроить, она позволяет получить доступ к более детализированным данным и меньше подвержена сбоям из-за проблем с подключением.
Мониторинг браузера для комплексного анализа
Если ваша интеграция Google Ads API предоставляет веб-интерфейс конечным пользователям, профилирование браузера может дать дополнительную информацию об удобстве использования. Вы можете узнать, на каких страницах запросы обрабатываются медленно, и сопоставить эти данные с результатами мониторинга на стороне сервера.
Google Аналитика также предоставляет готовые инструменты для отслеживания времени загрузки страниц в отчете о времени загрузки страниц. В нем есть несколько полезных представлений, которые помогут вам понять, насколько удобен ваш сайт для пользователей. В частности, это:
- Время загрузки страниц
- Время загрузки переадресации
- Время ответа сервера
Мониторинг в облаке
Существует множество инструментов, которые можно использовать для сбора и отслеживания показателей эффективности приложения. Например, вы можете использовать Google Cloud Logging, чтобы регистрировать показатели производительности в проекте Google Cloud, а затем настроить панели управления в Google Cloud Monitoring для отслеживания и сегментирования зарегистрированных показателей.
В руководстве по ведению журналов приведен пример специального перехватчика журналов gRPC, написанный для клиентской библиотеки Python. В этом примере перехватчик вызывает logger.log_struct(), чтобы отправить словарь Python со структурированными данными журнала в Cloud Logging, который сохраняет их в поле jsonPayload записи журнала:
logger.log_struct({
"method": method_name,
"elapsed_ms": elapsed_milliseconds,
"is_fault": is_fault,
})
На основе этих данных можно создавать показатели, которые позволят отслеживать работу приложения в Google Cloud Monitoring. Следуйте руководству по пользовательским показателям на основе данных журналов, чтобы создать показатели на основе данных журналов, используя журналы, отправленные в Google Cloud Logging.
Вы также можете использовать клиентские библиотеки Cloud Monitoring, чтобы определять показатели в коде и отправлять их напрямую в Monitoring отдельно от журналов.
Пример показателя на основе данных журналов
Предположим, вы хотите отслеживать значение is_fault, чтобы лучше понимать частоту ошибок в приложении. Поскольку logger.log_struct() записывает структурированные поля словаря в jsonPayload в каждой записи в журнале Cloud Logging, вы можете создать показатель счетчика с названием ErrorCount и фильтром, который соответствует отклоненным запросам, например jsonPayload.is_fault = true.
В Cloud Logging ярлыки позволяют группировать показатели по категориям на основе других данных в журналах. Вы можете настроить ярлык STRING с названием Method в поле jsonPayload.method, отправляемом в Cloud Logging, чтобы разбить количество ошибок по методам Google Ads API.
Настроив показатель ErrorCount и ярлык Method, вы можете создать новую диаграмму в Cloud Monitoring, чтобы отслеживать показатель ErrorCount с основанием группировки по Method.
Оповещения
В Cloud Monitoring и других инструментах можно настроить правила оповещений, которые определяют, когда и как должны срабатывать оповещения на основе ваших показателей. Инструкции по настройке оповещений Cloud Monitoring приведены в руководстве по оповещениям на основе показателей журналов.