如何扩展 activejob-google_cloud_pubsub worker?

How to scale activejob-google_cloud_pubsub worker?

概览

我有一个使用 gem activejob-google_cloud_pubsub. (Short usage tutorial) 的 Rails ActiveJob。我的应用程序部署到 ruby 弹性环境中的 AppEngine。虽然我的应用程序按预期工作,但我很难扩展使用来自 Google Cloud PubSub 的消息的辅助服务。 gem 的 README 文档提到了一种从终端而非 rails 应用程序中指定工人 max_threads 的方法。当我阅读 gem 的源代码时,我看到工作人员的 initialize 接受了该变量 max_threads (默认为核心数)。问题是我看不到如何使用默认配置初始化 worker,因此我可以增加线程数。

问题总结:

1 - 如何初始化具有更多线程的 activejob-google_cloud_pubsub Worker?

2 - 使用比机器中处理器更多的线程来初始化 worker 是否不可取?

其他详情:

关于如何扩展此类队列处理的任何输入都会有所帮助。

好吧,您每秒可以服务的消息数可以通过以下方式增加:

为了计算资源的细粒度性能,我建议检查 Scaling App.yaml reference 并使用 automatic_scaling 将计算能力扩展到高峰时段的负载。

1 - How to initialize the activejob-google_cloud_pubsub Worker with a higher number of threads?

worker.yaml

添加终端标志 --max_threads,如 gem's README

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

这应该在每个实例中创建 5 个工作线程。默认为逻辑核心数。