【问题标题】:What do I set ENV["WEB_CONCURRENCY"] to when using heroku and sidekiq使用 heroku 和 sidekiq 时,我应该将 ENV["WEB_CONCURRENCY"] 设置为什么
【发布时间】:2014-04-19 15:25:01
【问题描述】:
当我尝试将我的应用程序部署到 Heroku 时,我已经按照 heroku's guide 设置了 procfile 和 unicorn.rb 文件。但是,在文件的顶部有一行
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
我想这希望我在.env 文件中设置WEB_CONCURRENCY=。但是,我不确定我应该将其设置为什么。
【问题讨论】:
标签:
ruby-on-rails
heroku
config
unicorn
proc
【解决方案1】:
基本上,这是您希望在每个测功机中有多少个工作进程。见here。每个工作进程将允许您在同一个测功机上运行并发请求。每个工作进程都会消耗一些内存,因此更多的工作进程会使您的应用程序运行速度变慢。看起来 Heroku 推荐 2-4 个工作进程,所以我会在其中的某个地方设置它。如果不设置任何内容,则默认为3,这可能是一个不错的数字。
底线:您需要将其设置为整数,可能介于 2 和 4 之间。除非您有理由更改它,否则保留默认值 3 可能没问题。
【解决方案2】:
启用 WEB_CONCURRENCY 设置为基于测功机大小的默认值
$ heroku config:set SENSIBLE_DEFAULTS=enabled
$ git commit --allow-empty -m "enable sensible defaults"
$ git push heroku master
$ heroku run bash --size 2X
Running `bash` attached to terminal... up, run.7530
~ $ echo $WEB_CONCURRENCY
4
启用后,该值将默认为:
- 1X 测功机:WEB_CONCURRENCY=2
- 2X 测功机:WEB_CONCURRENCY=4
- PX 测功机:WEB_CONCURRENCY=16
这将根据您的测功机类型和大小更改您的WEB_CONCURRENCY
阅读更多here
【解决方案3】:
如果您使用 2+ 2X Standard Dynos 或 PX Performance Dynos,您可以增加它们并设置为其他值,具体取决于由 unicorn 派生的 unix 进程的平均内存占用。其他标准做法说将数字保持在 2-4 之间或默认为 3