0

终止时的节点应用程序不会关闭数据库会话。我目前正在使用节点清理库,但是当池连接超过一定数量时,该pool.close()函数将需要一些时间来解决,因此节点在不关闭池的情况下终止,并且会话在数据库中保持非活动状态。已经设置了适当的超时oracle DB,以便对非活动会话进行狙击和清理。但想知道是否有某种方法可以阻止节点进程退出以便pool.close()解决。

nodeCleanup(function(exitCode, signal) {
    console.log('Node server exiting with signal : ' + signal);
    console.log('Node server exiting with exitCode : ' + exitCode);
    db.getPool().close();
});

但是,如果我使用以下服务然后退出节点,所有数据库会话都会正确关闭。

app.get('/closePool', function(req, res, next) {
    db.getPool().close(function(err) {
        if (err)
            next(err);
        res.send('Pool closed');
    });
})
4

1 回答 1

1

您是否尝试过使用该beforeExit事件?https://nodejs.org/api/process.html#process_event_beforeexit

于 2017-11-21T15:23:25.097 回答