我有一个Hanami 1.3.3应用程序,应将Puma作为生产Web服务器运行。我想在集群模式下使用puma并正确使用preload_app。现在,我正在努力使用正确的Puma配置。我知道,每个子进程(工作人员)都必须拥有自己的新鲜DB连接,redis连接等。我的应用程序使用多个数据库连接,redis,sidekiq。主数据库通过hanami-model处理,其他数据库通过pg-gem处理(连接在class::initialize
处设置)。
处理此问题的正确的hanami方法是什么?
这里是一种方法:
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
Thx
[在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
以下信息可帮助我得出结论: