我正在使用Java和Node Js进行redshift。很久以前发现在所有关闭连接调用上都没有创建断开连接事件。 Java(使用 redshift.jdbc41 ):
Connection conn = null;
Statement stmt = null;
try {
...
} catch (Exception ex){
throw new Exception("Can't sync raw data from redshift");
}finally {
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
和Node Js(使用 pg 模块)示例:
var client = new pg.Client(conString);
client.connect(function (err) {
if (err) throw err;
client.query(query, function (err, result) {
client.end(function (err) {if (err) throw err;});
...
});
});
所以执行查询后调用代码来关闭连接,但是在 stl_connection_log 中,部分连接只创建发起会话事件,但没有断开会话,因此很多连接在几天内保持活动状态,而在客户端应用程序停止后不会重置。
有人可以建议如何解决这个问题吗?可能需要一些红移或其他在客户端应用程序中工作的配置吗?
答案 0 :(得分:0)
你提到的Node Js代码对我来说很好。如果要通过redshift强制关闭连接,可以使用以下查询。
select pg_terminate_backend (pg_backend_pid());
如果我做了一个错误的假设请发表评论,我会重新调整我的答案。