加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 设置Sidekiq:Heroku上的并发

发布时间:2020-12-17 03:56:43 所属栏目:百科 来源:网络整理
导读:我无法弄清楚Heroku上的并发性是如何工作的,以及如何设置最佳:Sidekiq的并发值 这是设置 – Puma Web Server 2 workers 5 threadsHeroku Dynos 8 web dynos 2 "worker" dynos (These will run Sidekiq,not to be confused with Puma Workers)DB Connections
我无法弄清楚Heroku上的并发性是如何工作的,以及如何设置最佳:Sidekiq的并发值

这是设置 –

Puma Web Server
  2 workers
  5 threads

Heroku Dynos
  8 web dynos
  2 "worker" dynos (These will run Sidekiq,not to be confused with Puma Workers)

DB Connections
 120 Max Connections Allowed by Postgres
 5   Active Record Pool Size (default)
 ??  Sidekiq :concurrency value

每个Puma工作者都可以使用默认的5个ActiveRecord DB连接(这对于每个有5个线程的连接很好).由于每个Web Dyno中有2个这样的Puma工作者,因此每个Web Dyno最多可以消耗10个连接.在所有8个Web dynos中,它们占用了80个连接

这将留下120 – 80 = 40个连接将被运行Sidekiq的2个dynos使用.假设每个dyno上都运行一个Sidekiq进程(这是真的吗?),每个Sidekiq进程最多可以使用20个连接(即set:concurrency 20)

>这个逻辑是正确的,还是我误解了这些过程如何在dynos上运行?
> Sidekiq进程是否受到ActiveRecord连接池限制为5的任何限制?如果是,听起来像设置为20是没用的,因为它一次最多只能使用5个连接.

谢谢您的帮助!

解决方法

你的逻辑听起来不错,但有几个注意事项.

Puma不会在所有5个线程上不断推送Sidekiq所以你可以使用较低的值,例如所以5个线程共享2个连接:

Sidekiq.configure_client do |config|
  config.redis = { size: 2 }
end

Sidekiq并发是工作线程的数量,而不是连接.您希望显式限制连接池大小:

Sidekiq.configure_server do |config|
  config.redis = { size: 20 }
end

默认情况下,Sidekiq的连接池大小是(并??发2),但20个连接应该可以正常使用25的默认并发.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读