我使用libpq v9.6.8作为我的应用程序(24/7运行),它将数据插入postgres数据库。我还运行PQexecParams来获取表格列。但随机(有时一周一次,但周末两次)这个阻塞PQexecParams
呼叫在约2小时后以某种方式返回。在这两个小时内,我的应用程序就会挂起......插入是通过异步PQsendQueryParams
完成的。
有没有办法为PQexecParams
配置超时(因为我在libgres服务器上找不到任何适当的超时设置)?有没有更好的方法来执行select同步?
提前谢谢
答案 0 :(得分:1)
这两个小时建议TCP keepalive踢,并确定连接已经坏了。
您可以设置keepalives_idle
连接参数,以便更早发生超时,并且您不会停顿两个小时。
但是你可能也想知道网络连接中止了什么。你的第一眼看看应该是PostgreSQL服务器日志;您应该看到与客户端上的错误消息匹配的错误消息。可能是网络组件出现故障 - 特别是寻找防火墙。