ruby - 如何为 Hanami 应用程序配置 Puma?
问题描述
我有一个 Hanami 1.3.3 应用程序,它应该与 Puma 作为生产网络服务器一起运行。我想在集群模式下使用 puma 并正确使用 preload_app。现在我正在为正确的 Puma 配置而苦苦挣扎。我知道,每个子进程(工作者)都必须有自己的新 DB 连接、redis 连接等。我的应用程序使用多个 db 连接、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
谢谢
解决方案
在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
以下是帮助我得出结论的信息:
推荐阅读
- r - 如何通过调用字符值来命名值?
- apache-camel - 如何处理骆驼快速修复无法发送异常?
- ansible - 在 Ansible 中注册和使用多个变量
- php - 使用模数/循环并放置在每 5 个位置
- c# - 找不到 api/values 404 localhost - ASP.NET Core
- java - 如何使用 tomcat API 重新连接到 websocket URI
- node.js - 当我们使用 ReactJS 和 NodeJS 时,拥有两个运行端口的目的是什么?
- javascript - 谷歌云功能不执行条纹调用
- python - 为什么 cv2.findEssentialMatrix 返回一个 12x3 数组?
- blazor-server-side - Blazor 服务器端的设计模式意见/建议