Как масштабировать activejob-google_cloud_pubsub работника? - PullRequest
1 голос
/ 26 января 2020

Обзор

У меня есть RailJ ActiveJob, который использует гем activejob-google_cloud_pubsub . ( Краткое руководство по использованию ). Мое приложение развернуто в AppEngine в гибкой среде ruby. Хотя мое приложение работает должным образом, у меня возникают трудности с масштабированием рабочих служб, которые используют сообщения из Google Cloud PubSub. В документах README для гемов указан способ указать max_threads работника из терминала, но не из приложения rails. Когда я читаю исходный код драгоценного камня, я вижу, что initialize для работника принимает эту переменную max_threads (которая по умолчанию равна числу ядер). Проблема в том, что я не вижу, как инициализировать рабочий с конфигурацией по умолчанию, чтобы я мог увеличить номер потока.

Сводка вопросов:

1 - Как инициализировать activejob-google_cloud_pubsub Работник с большим числом потоков?

2 - Было бы нежелательно инициализировать работника с большим количеством потоков, чем процессоров в машине?

Прочие сведения:

  • Я развертываю работника в отдельной службе от сервера Rails с помощью worker.yaml, кроме app.yaml
  • Служба работника масштабируется вручную до 3 экземпляров, однако при этом всего лишь обрабатываются 10 сообщений. в секунду (обработчик обедненных сообщений, только журнал для вывода и возврата)

Любой вклад в то, как я могу масштабировать этот тип обработки очереди, будет полезен.

Ответы [ 2 ]

1 голос
/ 30 января 2020

1 - Как инициализировать activejob-google_cloud_pubsub Worker с большим числом потоков?

worker.yaml

Добавить терминал флаг --max_threads, как описано в README драгоценного камня *1011*

runtime: ruby
env: flex
service: <xxx>
entrypoint: bundle exec activejob-google_cloud_pubsub-worker --max_threads=5
...

Это должно создать 5 рабочих потоков в каждом экземпляре. По умолчанию используется количество логических ядер.

0 голосов
/ 27 января 2020

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

Для мелкозернистых производительность вычислительных ресурсов Я бы посоветовал проверить справочник Scaling App.yaml и использовать automatic_scaling для масштабирования вашей вычислительной мощности до нагрузки в часы пик.

...