Кластерная пума не принимает более 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 в конфиге разработки рельсов.

Другие вопросы по тегам