我有一个 Hanami 1.3.3 应用程序,它应该与 Puma 作为生产网络服务器一起运行。我想在集群模式下使用 puma 并正确使用 preload_app 。现在我正在努力寻找正确的 Puma 配置。我知道,每个子进程(工作进程)都必须有自己的新数据库连接、redis 连接等。
我的应用程序使用多个数据库连接、redis、sidekiq。主数据库通过 hanami-model 处理,其他数据库通过 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
Thx
在一位同事的帮助下花见/聊天 https://gitter.im/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
以下是帮助我得出结论的信息:
彪马和导轨 https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
Hanami.boot 的定义 https://github.com/hanami/hanami/blob/master/lib/hanami.rb#L124
Hanami.disconnect 的定义 https://github.com/hanami/model/blob/31566f1449a84c156b00188b785dc6aafd76416d/lib/hanami/model.rb#L84
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)