如何扩展 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 是否不可取?
其他详情:
- 我正在通过使用 app.yaml
之外的 worker.yaml 在与 Rails 服务器分开的服务上部署工作人员
- 工作人员服务正在手动扩展到 3 个实例,这仍然勉强每秒处理 10 条消息(精简消息处理器,仅记录输出和 return)
关于如何扩展此类队列处理的任何输入都会有所帮助。
好吧,您每秒可以服务的消息数可以通过以下方式增加:
- More computing power:
- 增加实例数。
instances: 5
- 增加每个实例的 cpu 数量。
cpu: 4
- Concurrency on Ruby on Rails
- 减少每个请求所需的计算量:
- 使用 Debugging an Instance
调试您的代码
- 然后,使用 Stackdriver
监控代码性能
为了计算资源的细粒度性能,我建议检查 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 个工作线程。默认为逻辑核心数。
概览
我有一个使用 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 是否不可取?
其他详情:
- 我正在通过使用 app.yaml 之外的 worker.yaml 在与 Rails 服务器分开的服务上部署工作人员
- 工作人员服务正在手动扩展到 3 个实例,这仍然勉强每秒处理 10 条消息(精简消息处理器,仅记录输出和 return)
关于如何扩展此类队列处理的任何输入都会有所帮助。
好吧,您每秒可以服务的消息数可以通过以下方式增加:
- More computing power:
- 增加实例数。
instances: 5
- 增加每个实例的 cpu 数量。
cpu: 4
- 增加实例数。
- Concurrency on Ruby on Rails
- 减少每个请求所需的计算量:
- 使用 Debugging an Instance 调试您的代码
- 然后,使用 Stackdriver 监控代码性能
为了计算资源的细粒度性能,我建议检查 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 个工作线程。默认为逻辑核心数。