【问题标题】: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

        【讨论】:

          猜你喜欢
          • 2015-02-26
          • 2014-04-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-01
          相关资源
          最近更新 更多