Ruby on rails - 使用 heroku 和 sidekiq 时,我该将 ENV[ "WEB_CONCURRENCY" ] 设置为什么



当我试图将我的应用程序部署到Heroku时,我已经根据Heroku的指南设置了procfileunicorn.rb文件。但是,在文件的顶部有一行

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

我想这是想让我在.env文件中设置WEB_CONCURRENCY=。然而,我真的不确定我应该把它设置为什么。

基本上,这是您希望在每个dyno中有多少工作进程。请参见此处。每个工作进程都允许您在同一个dyno上运行一个并发请求。每个工作进程都会消耗一些内存,因此更多的工作进程会使应用程序运行速度变慢。看起来Heroku建议2-4个工作进程,所以我会在其中的某个地方设置它。如果不设置任何内容,它将默认为3,这可能是一个不错的数字。

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

根据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

这将根据您的dyno类型和大小更改您的WEB_CONCURRENCY点击此处阅读更多

如果您使用的是2+2X Standard Dynos或PX Performance Dynos,您可以根据unicon分叉的unix进程的平均内存占用量增加它们并设置为其他值。否则,标准做法是将数字保持在2-4之间或默认为3

相关内容

  • 没有找到相关文章

最新更新