ruby-on-rails – 设置Sidekiq:Heroku上的并发
我无法弄清楚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上运行? 谢谢您的帮助! 解决方法
你的逻辑听起来不错,但有几个注意事项.
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的默认并发. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |