【发布时间】:2020-01-25 21:21:46
【问题描述】:
概述
我有一个使用 gem activejob-google_cloud_pubsub 的 Rails ActiveJob。 (Short usage tutorial)。我的应用程序在 ruby flex 环境中部署到 AppEngine。虽然我的应用程序按预期工作,但我很难扩展使用来自 Google Cloud PubSub 的消息的工作人员服务。 gem 的 README 文档提到了一种从终端指定 Worker 的 max_threads 的方法,而不是从 rails 应用程序中指定的方法。当我阅读 gem 的源代码时,我看到工作人员的 initialize 接受了该变量 max_threads (默认为核心数)。问题是我看不到如何使用默认配置初始化worker,所以我可以增加线程数。
问题总结:
1 - 如何用更多线程数初始化activejob-google_cloud_pubsub Worker?
2 - 用比机器中的处理器更多的线程来初始化工作线程是不可取的吗?
其他细节:
- 我通过使用 app.yaml 之外的 worker.yaml 将 worker 部署在与 Rails 服务器不同的服务上
- 工作人员服务正在手动扩展为 3 个实例,但每秒仍勉强处理 10 条消息(精简消息处理器,仅记录到输出和返回)
任何关于如何扩展此类队列处理的输入都会有所帮助。
【问题讨论】:
-
我的答案中的任何链接有用吗?你有同样的性能问题吗?
-
@Juancki,虽然您的回答确实提供了有关使用 Rails 进行扩展和多线程主题的有用资源的链接,但它没有回答有关
activejob-google_cloud_pubsubgem 的主要技术问题。我找到了一个更直接的答案并将提交。感谢您的资源链接:) -
您好,感谢您的回复。请考虑将您的回答标记为正确。 stackoverflow.com/help/self-answer
标签: ruby-on-rails google-cloud-pubsub rails-activejob app-engine-flexible