Мне нужна помощь с настройкой Puma (многопоточный + многоядерный сервер) в моем приложении RoR4 Heroku. Документация Heroku по этому вопросу не совсем актуальна. Я следовал этому: Параллелизм и подключения к базе данных для конфигурации, в которой не упоминается конфигурация для кластер, поэтому мне пришлось использовать оба типа вместе (потоковое и многоядерное).
Моя текущая конфигурация:
./Procfile
web: bundle exec puma -p $PORT -C config/puma.rb
./config/puma.rb
environment production
threads 0,16
workers 4
preload_app!
on_worker_boot do
ActiveRecord::Base.connection_pool.disconnect!
ActiveSupport.on_load(:active_record) do
config = Rails.application.config.database_configuration[Rails.env]
config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10 # seconds
config['pool'] = ENV['DB_POOL'] || 5
ActiveRecord::Base.establish_connection
end
end
Вопросы:
а) Нужна ли мне конфигурация before_fork/after_fork, как в Unicorn, так как воркеры кластера разветвлены?.
б) Как мне настроить количество потоков в зависимости от моего приложения — по какой причине это может быть сделано? / В каких случаях это будет иметь значение? Разве 0:16 уже не оптимизировано?
c) База данных Heroku допускает 500 подключений. Что было бы хорошим значением для DB_POOL в зависимости от количества потоков, рабочих и dyno? - Требует ли каждый поток на одного рабочего на дино единственное соединение с БД при параллельной работе?
В целом: как должна выглядеть моя конфигурация для параллелизма и производительности?
ab
и увеличить количество воркеров (потоков в вашем случае) до тех пор, пока производительность не упадет (запросы занимают больше времени для выполнения). Хорошо взять довольно динамичную страницу и сначала посмотреть, как действуют разные пропорции запросов/одновременных запросов (также имейте в виду, что если вы делаете много запросов, heroku может отрезать вас от подозрения DoS) - person Mike Szyndel   schedule 30.07.2013Multi-Thread+Multi-Core Server
означает ли этоPX
dyno (500 долларов в месяц)? - person nothing-special-here   schedule 02.06.2015