彪马的积压设置类似于独角兽?

时间:2013-09-12 04:59:13

标签: heroku unicorn puma

Unicorn接受listen配置,允许在工作人员忙碌时以毫秒为单位设置backlog。减少此值允许路由器在其忙碌时将请求发送给另一个工作人员。

Puma有类似的东西吗?我无法找到这样的东西。

这将非常适合Heroku。

1 个答案:

答案 0 :(得分:1)

现在支持此功能。您可以将查询参数传递给具有backlog值的绑定。

以下是如何在Rails应用中执行此操作的示例。

# config/puma.rb
workers Integer(ENV['PUMA_WORKERS'] || 3)
threads Integer(ENV['MIN_THREADS']  || 1), Integer(ENV['MAX_THREADS'] || 16)

preload_app!

rackup      DefaultRackup

port = Integer(ENV['PORT'] || 3000)
backlog = Integer(ENV['PUMA_BACKLOG'] || 20)

bind "tcp://0.0.0.0:#{port}?backlog=#{backlog}"

environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # worker specific setup
  ActiveSupport.on_load(:active_record) do
    config = ActiveRecord::Base.configurations[Rails.env] ||
                Rails.application.config.database_configuration[Rails.env]
    config['pool'] = ENV['MAX_THREADS'] || 16
    ActiveRecord::Base.establish_connection(config)
  end
end 

注意:请确保您使用的是最新版本的Puma。我已经在2.8.2验证了这一点。

Here is an example app使用此配置,我已在Heroku上测试过它。

有关详细信息,我已将解决方案添加到我的博客中:http://mikecoutermarsh.com/adjusting-pumas-backlog-for-heroku/