Как настроить Puma для приложения Hanami?
У меня есть приложение Hanami 1.3.3, которое должно работать с Puma в качестве производственного веб-сервера. Я хочу использовать puma в кластерном режиме и правильно использовать preload_app. Теперь борюсь с правильным конфигом Puma. Я знаю, что каждый дочерний процесс (рабочий) должен иметь собственное свежее DB-соединение, redis-соединение и т. Д. Мое приложение использует несколько db-соединений, redis, sidekiq. Основная база данных обрабатывается с помощью модели hanami, другие базы данных обрабатываются с помощью pg-gem (соединения устанавливаются вclass::initialize
) напрямую.
Как правильно с этим справиться ханами?
Вот один из подходов:
workers 4
threads 1, 8
preload_app!
rackup DefaultRackup
port 2300
environment 'production'
on_worker_boot do
require_relative "config/environment"
Hanami.boot
end
Это верно? Мне это кажется неправильным.
Следить лучше?
# ...
on_worker_boot do
Hanami::Model.disconnect # but what happens to the opened db-connections of parent-process?
Hanami::Model.load!
# redis??
# sidekiq??
end
Спасибо
1 ответ
С помощью человека из hanami / chat я получил следующую конфигурацию Puma:
require_relative './environment'
workers 2
threads_count = 5
threads threads_count, threads_count
daemonize true
preload_app!
rackup DefaultRackup
port 2300
environment 'production'
on_worker_boot do
Hanami.boot
end
Вот информация, которая помогла мне сделать вывод: