基本上我这样创建我的数据库客户端:
client = new pg.Client(conString);
client.connect();
但是在数据库运行一段时间之后,客户端可能会断开连接并给我这个错误:
"Error: read ECONNRESET"
我尝试这样做是为了让它保持开放状态:
db.client.on('error', function(e){
db.client.connect();
});
但这不起作用,我仍然得到错误。有人以前处理过这个问题并且知道如何解决它吗?
答案 0 :(得分:1)
听起来您可能遇到因NAT连接跟踪表或类似内容到期而导致连接被丢弃的问题。
启用TCP Keepalive,server-side或客户端支持客户端。
如果您不能使用TCP Keepalive,则可以发送空查询,即将空字符串作为查询发送。这在PostgreSQL中是有效且合法的,并且会强制客户端和服务器之间的往返,但不会在日志中添加任何噪音。