当我试图将我的应用程序部署到Heroku时,我已经根据Heroku的指南设置了procfile
和unicorn.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