Задержка конечных точек облака GCP - PullRequest
4 голосов
/ 05 марта 2019

Обзор продукта облачных конечных точек гласит:

Расширяемый прокси-сервер службы обеспечивает безопасность и понимание менее чем за 1 мс на вызов.

Но я наблюдаю большечем 10 мс (может быть, 100 мс время от времени) добавленная задержка.

Наши настройки сервера:

  • у нас есть кластер GKE, который имеет:
    • Kubernetesразвертывание для модулей, каждый из которых имеет контейнер ESP и наш собственный контейнер, который обслуживает службу gRPC
    • службу Kubernetes (типа LoadBalancer), цель которой относится к контейнеру ESP
  • у нас есть конфигурация конечной точки для службы gRPC, которая имеет только базовые компоненты, как показано ниже.
  • мы выпустили ключ API для клиентов

У нас былоклиентская программа в другом кластере GKE в той же зоне для этого эксперимента.

С этим параметром наши эксперименты показали:

  • с тайм-аутом 15 мс на стороне клиента, более 95% вызововистекло время ожидания
  • Панель мониторинга конечных точек GCP, большинство запросов занимало более 100 мс
  • на трассировке стекового драйвера, вся задержка принадлежит "Backend"
  • , при измерении в нашем собственном контейнере задержка была ниже 5 мс

Загрузка ЦП сервера была очень низкой (ниже 10%), и в это время нет признаков перегрузки.

Если предположить, что gRPC не добавляет большой задержки, мы думаем, что задержка, вероятно, была изESP.

Итак, мы провели еще один эксперимент с обходом ESP:

  • мы изменили сервис Kubernetes таким образом, чтобы он ссылался на наш собственный контейнер, а не на контейнер ESP

После этого исправления задержка, измеренная на клиенте, была снижена до 5 мс.

Итак, если наши эксперименты были правильными, кажется, что контейнер ESP добавляет задержку, а не 1 мс, что рекламируется в обзоре продукта.Мы что-то упустили?

Конфигурация конечной точки:

type: google.api.Service
config_version: 3

name: foo.endpoints.bar.cloud.goog

title: foo in bar
apis:
- name: com.bar.FooService
...