接收" ActiveRecord :: StatementInvalid:PG :: ConnectionBad:PQconsumeInput()无法从服务器接收数据:连接超时"在佣金任务中

时间:2016-07-10 17:01:02

标签: ruby-on-rails multithreading postgresql activerecord pgbouncer

在我的rake任务中,我通过pgbouncer设置连接到postgresql。对于某些查询,我收到此错误:

ActiveRecord::StatementInvalid: PG::ConnectionBad: PQconsumeInput() could not receive data from server: Connection timed out

在我的pgbouncer日志中,我看到了这个条目:

closing because: client unexpected eof (age=3110)

我已在我的config/database.yml文件中禁用了预准备语句,并在我的pgbouncer配置文件中启用了transaction pool_mode。 当我直接连接到postgres时,我不会收到此错误。

同样在我的rake任务中,我正在创建多个线程。我尝试按照建议here在我的主题中运行ActiveRecord::Base.connection.reconnect!。那也没有帮助。

我使用的是带有this fix的rails版本4.2.5。我仍然收到此错误"无法从服务器接收数据:连接已超时"。

1 个答案:

答案 0 :(得分:1)

这是由于客户端中的网络问题引起的。由于我们将服务器和客户端迁移到Google Cloud Platform,因此无法重现。早些时候我们的服务器在DigitalOcean,而我们的客户在GCP。