【发布时间】:2019-08-09 22:19:33
【问题描述】:
我的问题是 pgbouncer 正在断开连接。系统管理员将 client_idle_timeout 设置为 60 秒。对此有什么解决方案吗?我的意思是,是否有可能(宝石或设置)连接和断开连接(重新连接)到数据库我们要发送的每个查询?
红宝石 2.0.0
导轨 4.2.3
第 0.17.1 页
当连接超过 x 秒时出现以下错误(例如,当我打开 rails 控制台时,等待 x 秒,然后对 db 运行一些 ActiveRecord 查询):
错误:client_idle_timeout
合约负载 (0.5ms) 选择 "contracts".* FROM "contracts" ORDER BY "contracts"."id" ASC LIMIT 1
PG::ConnectionBad: PQconsumeInput() SSL 连接已关闭 出乎意料:
SELECT "contracts".* FROM "contracts" ORDER BY "contracts"."id" ASC LIMIT 1
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQconsumeInput() SSL 连接已关闭 出乎意料:
SELECT "contracts".* FROM "contracts" ORDER BY "contracts"."id" ASC LIMIT 1
【问题讨论】:
-
是的,我遇到了类似的问题,问题是配置的空闲超时,您必须增加它,否则您无法在控制台中执行任何操作。当 rails 执行查询并在连接消失后尝试手动重新连接活动记录时,您可以进行大量的尝试/捕获。
-
@MaicolBen 它不是一个修复程序。关于我认识的那两个。我正在寻找解决此问题的方法,而不是解决问题。例如,每次发生这种情况时都重新连接。
标签: ruby-on-rails psql pgbouncer