Понимание и управление задержками в APISIX: Полное техническое руководство

December 29, 2023

Technology

Распространенный запрос от пользователей касается точного измерения задержки в APISIX. При использовании APISIX, как следует подходить к необычно высокой задержке?

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

Итак, что такое задержка и что такое задержка в APISIX? Задержка в APISIX относится ко времени, затраченному на весь процесс API-запроса, начиная с отправки клиентом и заканчивая получением ответа. Эта задержка включает такие факторы, как задержка сети клиента, время внутренней обработки APISIX и задержка взаимодействия с вышестоящими сервисами.

latency

Для лучшего понимания и измерения этих задержек мы можем разделить их на несколько ключевых компонентов.

  1. Задержка сети между клиентом и APISIX: Это измеряет время, затраченное на передачу запроса от клиента к APISIX, на которое влияют такие факторы, как расстояние между клиентом и APISIX, перегрузка сети и т.д. Для измерения этого времени можно использовать специализированные инструменты.

  2. Время внутренней обработки APISIX: Это включает время, которое APISIX тратит на выполнение различных операций внутри, включая принятие решений по маршрутизации, аутентификацию, авторизацию и пользовательскую логику, реализованную через плагины.

  3. Задержка взаимодействия с вышестоящими сервисами: Если APISIX взаимодействует с вышестоящими сервисами (обычно это backend-приложения или микросервисы), время, затраченное на это взаимодействие, включается в общую задержку. Это включает время, затраченное на передачу запроса от APISIX к вышестоящему сервису и время, необходимое для возврата ответа.

Задержка APISIX может быть рассчитана по формуле: Задержка APISIX = Общая задержка - Задержка взаимодействия с вышестоящими сервисами. Общая задержка представляет собой время от отправки запроса до получения ответа, в то время как задержка взаимодействия с вышестоящими сервисами сосредоточена на времени общения между APISIX и вышестоящим сервисом.

Примечание: В Linux upstream_response_time измеряется с помощью clock_gettime(CLOCK_MONOTONIC_COARSE), и при типичных значениях CONFIG_HZ=250 она может составлять до 4 миллисекунд. В то же время время для расчета request_time не является монотонным временем, а результатом gettimeofday(), который представляет собой время по настенным часам. Поэтому в некоторых случаях upstream_response_time может быть немного больше, чем request_time.

Кроме того, в условиях слабой сети или в сценариях, связанных с загрузкой/выгрузкой больших файлов, задержка между клиентом и шлюзом может быть добавлена к apisix_latency. Пожалуйста, анализируйте конкретные проблемы в каждом отдельном случае.

Задержка APISIX может быть классифицирована на три типа:

  1. Задержка на стороне клиента: Включает задержку передачи по сети и операции, такие как чтение тела запроса между APISIX и клиентом. Мониторинг и анализ этой задержки предоставляют информацию о производительности связи для оптимизации.

  2. Задержка NGINX: Поскольку APISIX использует NGINX для обработки запросов и маршрутизации, внутреннее время выполнения NGINX влияет на общую задержку. Для мониторинга можно использовать специализированные инструменты.

  3. Задержка выполнения кода плагинов Lua: Учитывая множество Lua плагинов в APISIX, время выполнения каждого плагина является значительным фактором. Для анализа требуются специализированные инструменты.

Для решения проблем с задержкой можно провести систематический анализ на основе выявленных компонентов задержки. Решения включают оптимизацию сетевой архитектуры, использование CDN для задержки сети клиента, выявление проблемного кода Lua в APISIX и исследование взаимодействия с вышестоящими сервисами на предмет потенциальных проблем. Постоянный мониторинг и анализ позволяют своевременно обнаруживать и устранять потенциальные проблемы, способствуя лучшей оптимизации API-сервисов для удовлетворения требований конечных клиентов.

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

Для данных сравнения QPS и задержки между APISIX и другими продуктами шлюзов, обратитесь к статье "Почему Apache APISIX является лучшим API-шлюзом?".

Сравнение задержек APISIX и Kong

Tags: