【问题标题】:Will the number of connections on Redis limit the number of jobs I can execute in the background?Redis 上的连接数会限制我可以在后台执行的作业数吗?
【发布时间】:2018-12-21 23:29:04
【问题描述】:

我目前在我的 Rails 应用程序上使用 Sidekiq(免费)和 Heroku Redis(免费)。我注意到 Heroku Redis 说它的连接限制为 20。

这会影响/限制我可以使用 Sidekiq 执行的后台作业数量吗?

基本上,我在这个应用程序中使用 Sidekiq 的目的只是发送一封电子邮件以获取时事通讯。新闻通讯准备好后,通过单击按钮发送电子邮件。此按钮从我的EditionsController 执行以下代码:

def send_notification
    users = User.all

    users.each do |user|
        EditionMailer.with(edition: @edition, user: user).notification_email.deliver_later
    end

    redirect_to edition_path(@edition)
end

我目前在该应用上有 63 个用户,因此这将发送 63 封邮件。不过,我希望以后会添加更多内容。

提前致谢。

【问题讨论】:

  • 除非您指定RAILS_MAX_THREADS,否则sidekiq 将使用大约5 个并发作业;话虽这么说,redis 永远不会受到并发最大作业数的影响,因为它们是在排队系统中处理的。它将分批处理 20 个工作
  • 哦,好的。因此,这意味着拥有 20 个连接不会阻止电子邮件发送出去,而只会随着发送的电子邮件越来越多而减慢速度。对吗?
  • 是的@UmarGhouse

标签: ruby-on-rails redis sidekiq


【解决方案1】:

要让 sidekiq 工作,您需要来自 web 服务器端(又名客户端)的连接和来自 sidekiq 工作人员(又名服务器/工作人员)的连接,所有这些都是池化的。

因此,连接限制会影响您可以拥有多少并发工作人员和 Web 服务器进程/线程。这限制了可以并行处理的作业数量,而不是作业总数。

另外请记住,在部署期间,您将获得来自网络 dyno 的双倍连接(当新的已经启动并且旧的仍在处理连接时)。

对于 sidekiq 配置,您可以使用 calculator by Manuel van Rijn

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多