【问题标题】:PG::UnableToSend: no connection to the server in Rails 5PG::UnableToSend:Rails 5 中没有与服务器的连接
【发布时间】:2021-02-12 03:02:49
【问题描述】:

我有 2 台服务器(A,B)。 我在 A 中运行 rails app,在 B 中运行 db。 在服务器 B 中,我正在运行 pgbouncer 和 postgresql。

当我在 A 中运行 200 个线程时,即使我将 pgbouncer 最大客户端连接增加到 500,我也会遇到这个问题。并且 pgbouncer pool_mode 是会话。 Postgresql 池为 100。

我还在服务器 A 中将 db pool 增加到 500。

我怎样才能避免这个问题并运行 200 个线程而没有任何问题?

后来,我更新了代码。删除 pgbouncer 并直接使用 postgresql。 创建了 2 个执行 db 操作的新线程,其他线程不再执行 db 操作。 在线程运行时,我正在监视活动连接。它保持 3 处于活动状态。 但是在线程结束时,我遇到了这个问题。 我使用 ActiveRecord::Base.connection_pool.stat 显示连接池状态

{:size=>500, :connections=>4, :busy=>3, :dead=>0, :idle=>1, :waiting=>0, :checkout_timeout=>5}
rake aborted!
ActiveRecord::StatementInvalid: PG::UnableToSend: no connection to the server

有人可以帮我解决这个问题吗?

【问题讨论】:

  • PG 日志中的任何内容?
  • 2020-10-30 07:57:45.808 UTC [15779] LOG C-0x55f2c78d3520:saveatrain_production/saveatrain@13.94.118.240:35910 关闭,因为:客户端关闭请求(年龄=113s)2020-10 -30 07:57:48.636 UTC [15779] 日志统计:690 xacts/s,705 个查询/s,94591 B/s,出 232456 B/s,xact 913 us,查询 870 us,等待 0 us 2020-10 -30 07:57:50.990 UTC [15779] LOG C-0x55f2c78d1ae0: saveatrain_production/saveatrain@13.94.118.240:59996 关闭,因为:客户端关闭请求 (age=782s)

标签: ruby-on-rails postgresql pgbouncer


【解决方案1】:

我合并了数据库实例和应用程序实例。 这样可行。 我仍然不确定是 db 版本问题还是 postgresql 远程访问问题。 在我看来,这是远程访问问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2012-09-29
    • 2018-09-24
    • 2013-11-18
    • 2015-01-31
    相关资源
    最近更新 更多