Кластерная пума не принимает более 1 запроса одновременно
Я настроил свой веб-сервер puma на основе руководства heroku: Развертывание Rails-приложений с помощью веб-сервера Puma
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 это работает, поэтому вопрос, почему он не работает в режиме разработки?
1 ответ
rails s
не использует Procfile, вы можете посмотреть на инструмент, например, foreman: https://github.com/ddollar/foreman
обновление: это было решение:
config.allow_concurrency = true
в конфиге разработки рельсов.