ruby-on-rails - Rails PgBouncer client_idle_timeout
问题描述
我的问题是 pgbouncer 正在断开连接。系统管理员将client_idle_timeout设置为 60 秒。对此有什么解决方案吗?我的意思是,是否有可能(宝石或设置)连接和断开连接(重新连接)到数据库我们要发送的每个查询?
红宝石 2.0.0
轨道 4.2.3
pg 0.17.1
当连接长于 x 秒时,我收到以下错误(例如,当我打开 rails 控制台时,等待 x 秒,然后对 db 运行一些 ActiveRecord 查询):
错误:client_idle_timeout
Contract Load (0.5ms) SELECT "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 "合同"."id" ASC LIMIT 1
解决方案
调用ActiveRecord::Base.clear_active_connections!
会将过时的连接返回到线程池并检查新连接,因此您不必重新启动控制台/服务器
推荐阅读
- python-3.x - 如何为熊猫移动窗口使用for循环
- c++ - std::from_chars 在 MSVC 下无法编译
- android-source - 将OTA下载到Android设备后会发生什么
- android - 如何以编程方式更改约束布局中的约束边距?
- css - CSS 动画,FadeIn / FadeOut 2 连续图像
- javascript - 将表单序列化到 localStorage / 在页面重新加载后恢复它(没有 jQuery)
- python - 如何同时在 CNN 和 Gist 数据上训练 Keras 模型?
- windows - Win10:Cmd批处理文件到Powershell的转换
- react-native - 无法使用带有 React Native 项目的 react-apollo-hooks 使 Mutation 工作
- reactjs - 反应状态值不会更新