Горизонтально автоматически масштабируемые модули Kubernetes не извлекают сообщения из Google Cloud Pub / подписка - PullRequest
0 голосов
/ 04 октября 2019

Наше приложение работает на Google Kubernetes Engine и получает сообщения из подписки Google Cloud Pub/Sub. У нас есть один модуль, работающий в режиме ожидания, и горизонтальное автоматическое масштабирование модуля установлено до 10 модулей в зависимости от использования процессора. Подписка в основном пуста, и когда запускается пакетное задание, оно записывается в тему Pub / Sub. Автомасштабирование работает хорошо. Он мгновенно (в течение 30 секунд) масштабируется до 10 пакетов, если в подписке Pub / Sub есть ожидающие сообщения. Но проблема в том, что только несколько модулей извлекают сообщения из подписки, а остальные просто сидят, хотя в подписке все еще есть сообщения.

Параметры Pub / Sub Client:

MaxExtension: 600
MaxOutstandingMessages: 100 (also tried with 25)
Synchronous: true (also tried with false)

Настройки подписки на Google Cloud Pub / Sub::

Pull-based
Ack Deadline is 600 seconds

И как только запускается пакетное задание, он записывает 20 тыс. Сообщений в тему Pub / Sub. И приложение может обрабатывать в среднем 2 сообщения в секунду.

Приложение написано на golang, и мы используем cloud.google.com/go v0.44.1 версию пакета.

Знаете ли вы, почему модулисидя и не извлекая сообщения, даже если в подписке на облачный паб / подписка есть отставание?

1 Ответ

0 голосов
/ 05 октября 2019

Можете ли вы попытаться установить это:

    sub.ReceiveSettings.NumGoroutines = 10 * runtime.NumCPU()
    sub.ReceiveSettings.MaxOutstandingMessages = -1
    sub.ReceiveSettings.MaxOutstandingBytes = -1

Может быть, сняв некоторый лимит, это может быть лучше?

Дайте мне знать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...