在我的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。我仍然收到此错误"无法从服务器接收数据:连接已超时"。
答案 0 :(得分:1)
这是由于客户端中的网络问题引起的。由于我们将服务器和客户端迁移到Google Cloud Platform,因此无法重现。早些时候我们的服务器在DigitalOcean,而我们的客户在GCP。