使用 MongoDB 本机驱动程序时在退出时关闭 MongoClient 连接?
Closing MongoClient connection on exit when using MongoDB Native driver?
每次服务器关闭时是否要关闭MongoClient连接?
我看过以下代码片段,想知道这是否真的有效并且应该这样做,或者是否完全没有必要在退出时执行关闭操作:
// Adding listeners
function setupListeners(client: MongoClient){
client.addListener('topologyClosed', ()=>{
isTopologyConnected = false;
console.warn("topologyClosed");
})
}
process.on("exit", () => {
console.log("EXIT - MongoDB Client disconnected");
closeConnection()
});
//Cleanups
//catching signals and doing cleanup
['SIGHUP', 'SIGINT', 'SIGQUIT', 'SIGILL', 'SIGTRAP', 'SIGABRT',
'SIGBUS', 'SIGFPE', 'SIGUSR1', 'SIGSEGV', 'SIGUSR2', 'SIGTERM'
].forEach(function (signal) {
process.on(signal, function () {
if (isTopologyConnected){
client.close();
}
process.exit(1);
});
});
非常感谢。
Should the MongoClient connection be closed every time the server
shuts down?
是的,关闭连接是个好习惯。对于每个连接,mongo DB 确实为其执行分配了一个线程。如果您不关闭它,它会继续使用数据库服务器上的资源。
Node.js 连接使用池连接到数据库,它可以在不使用时重复使用,但是如果您退出脚本,最好关闭连接,因为它不会自动关闭连接。
每次服务器关闭时是否要关闭MongoClient连接?
我看过以下代码片段,想知道这是否真的有效并且应该这样做,或者是否完全没有必要在退出时执行关闭操作:
// Adding listeners
function setupListeners(client: MongoClient){
client.addListener('topologyClosed', ()=>{
isTopologyConnected = false;
console.warn("topologyClosed");
})
}
process.on("exit", () => {
console.log("EXIT - MongoDB Client disconnected");
closeConnection()
});
//Cleanups
//catching signals and doing cleanup
['SIGHUP', 'SIGINT', 'SIGQUIT', 'SIGILL', 'SIGTRAP', 'SIGABRT',
'SIGBUS', 'SIGFPE', 'SIGUSR1', 'SIGSEGV', 'SIGUSR2', 'SIGTERM'
].forEach(function (signal) {
process.on(signal, function () {
if (isTopologyConnected){
client.close();
}
process.exit(1);
});
});
非常感谢。
Should the MongoClient connection be closed every time the server shuts down?
是的,关闭连接是个好习惯。对于每个连接,mongo DB 确实为其执行分配了一个线程。如果您不关闭它,它会继续使用数据库服务器上的资源。
Node.js 连接使用池连接到数据库,它可以在不使用时重复使用,但是如果您退出脚本,最好关闭连接,因为它不会自动关闭连接。