集群 puma 不同时接受超过 1 个请求
Clustered puma not accepting more than 1 request concurrently
我已经根据 heroku 手册设置了我的 puma 网络服务器:Deploying Rails Applications with the Puma Web Server
config/puma.rb
:
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 2)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
ActiveRecord::Base.establish_connection
end
Procfile
包含:
web: bundle exec puma -C config/puma.rb
现在,当我尝试访问具有 sleep 10
延迟响应的操作,然后尝试访问其他一些操作时,我的理解是 Puma 会同时处理这 2 个请求(因为我有 2 个工作人员) .但是它会等待第一个休眠的请求完成,然后继续进行第二个请求。我错过了什么吗?
我的设置是:
Ruby 2.2.4
Rails 4.2.0
编辑:
好的,所以我发现在 Heroku 上它可以工作,所以问题是,为什么它在开发模式下不起作用?
rails s
不使用 Procfile,您可能想看看使用像 foreman 这样的工具:https://github.com/ddollar/foreman
更新:这是解决方案:
config.allow_concurrency = true
在 rails 开发配置中。
我已经根据 heroku 手册设置了我的 puma 网络服务器:Deploying Rails Applications with the Puma Web Server
config/puma.rb
:
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 2)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
ActiveRecord::Base.establish_connection
end
Procfile
包含:
web: bundle exec puma -C config/puma.rb
现在,当我尝试访问具有 sleep 10
延迟响应的操作,然后尝试访问其他一些操作时,我的理解是 Puma 会同时处理这 2 个请求(因为我有 2 个工作人员) .但是它会等待第一个休眠的请求完成,然后继续进行第二个请求。我错过了什么吗?
我的设置是:
Ruby 2.2.4
Rails 4.2.0
编辑:
好的,所以我发现在 Heroku 上它可以工作,所以问题是,为什么它在开发模式下不起作用?
rails s
不使用 Procfile,您可能想看看使用像 foreman 这样的工具:https://github.com/ddollar/foreman
更新:这是解决方案:
config.allow_concurrency = true
在 rails 开发配置中。