如何保持PostgreSQL连接打开?

时间:2014-11-15 13:27:48

标签: javascript node.js postgresql

基本上我这样创建我的数据库客户端:

client = new pg.Client(conString);
client.connect();

但是在数据库运行一段时间之后,客户端可能会断开连接并给我这个错误:

"Error: read ECONNRESET"

我尝试这样做是为了让它保持开放状态:

db.client.on('error', function(e){        
    db.client.connect();
});

但这不起作用,我仍然得到错误。有人以前处理过这个问题并且知道如何解决它吗?

1 个答案:

答案 0 :(得分:1)

听起来您可能遇到因NAT连接跟踪表或类似内容到期而导致连接被丢弃的问题。

启用TCP Keepalive,server-side或客户端支持客户端。

如果您不能使用TCP Keepalive,则可以发送空查询,即将空字符串作为查询发送。这在PostgreSQL中是有效且合法的,并且会强制客户端和服务器之间的往返,但不会在日志中添加任何噪音。