Как настроить 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

Вот информация, которая помогла мне сделать вывод:

пума и рельсы

определение Hanami.boot

определение Hanami.disconnect

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