在使用heroku和sidekiq时,我将ENV [" WEB_CONCURRENCY"]设置为什么

时间:2014-04-19 15:25:02

标签: ruby-on-rails heroku config unicorn proc

当我尝试将我的应用部署到Heroku时,我已根据heroku's guide设置了procfileunicorn.rb文件。但是,在文件的顶部有一行

worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)

我想这要我在WEB_CONCURRENCY=文件中设置.env。但是,我不确定我应该设置的等于什么。

3 个答案:

答案 0 :(得分:2)

基本上,每个dyno中需要多少个工作进程。见here。每个工作进程都允许您在同一个dyno上运行并发请求。每个工作进程都会占用一些内存,因此更多的工作进程会使您的应用运行速度变慢。看起来Heroku推荐2-4个工作进程,所以我会把它放在那里的某个地方。如果你没有设置任何东西,它将默认为3,这可能是一个很好的数字。

底线:您需要将其设置为一个整数,可能介于2和4之间。除非您有理由更改它,否则保留默认值为3可能没问题。

答案 1 :(得分:2)

根据dyno大小启用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 dynos:WEB_CONCURRENCY = 2
  • 2X dynos:WEB_CONCURRENCY = 4
  • PX dynos:WEB_CONCURRENCY = 16

这将根据您的动态类型和大小更改您的WEB_CONCURRENCY 阅读更多here

答案 2 :(得分:0)

如果您使用2 + 2标准Dynos或PX性能Dynos,您可以增加它们并设置为其他值,具体取决于unicorn分叉的unix进程的平均内存占用量。其他标准做法是将数字保持在2-4之间或默认为3