gpt4 book ai didi

ruby - fork 时,Sequel 会断开与 SSL 错误的连接,为什么?

转载 作者:行者123 更新时间:2023-11-29 13:22:53 34 4
gpt4 key购买 nike

我一直在查看 Hanami并发现我的 Sequel 连接因以下错误而终止:

Sequel::DatabaseDisconnectError: PG::ConnectionBad: PQconsumeInput() SSL 错误:解密失败或记录错误 mac: SELECT NULL

无论是服务器(thin、puma、webrick)还是环境。经过一些实验,原来罪魁祸首是 Gemfile 中的 gem 'shotgun'(hanami 不会重新加载代码)。来自猎枪文档:

Each time a request is received, it forks, loads the application in the child process, processes the request, and exits the child process.

当在生产中使用 nginx 时,forked Sequel 会出于同样的原因断开连接。

这可以通过以下代码得到改善,但这意味着必须在每次请求时重新连接:

SequelDB.extension :connection_validator
SequelDB.pool.connection_validation_timeout = -1

所以看起来 Sequel 的连接池在 fork 之后被破坏了。

Sequel 为什么要这样做?

最佳答案

当进程 fork 时,进程的每个副本共享用于与 postgres 通信的文件描述符。这不是续集特定的,甚至不是 Postgres 特定的,尽管一些库检测到 fork 并为您重新连接到数据库(请参阅续集问题跟踪器上的 discussion - 简短版本是续集不会发生)

关于ruby - fork 时,Sequel 会断开与 SSL 错误的连接,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38680098/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com