From f07b1fc0b782032ba106c8eaf0fd77cea97d1522 Mon Sep 17 00:00:00 2001 From: ciniao <4041990@qq.com> Date: Fri, 15 Dec 2023 14:41:10 +0800 Subject: [PATCH] =?UTF-8?q?mdb=E7=A9=BA=E9=97=B2=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gameLog.ts | 5 ++++- src/setMongodb.ts | 20 +++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/gameLog.ts b/src/gameLog.ts index 04e8c09..7f70f2c 100644 --- a/src/gameLog.ts +++ b/src/gameLog.ts @@ -9,7 +9,10 @@ async function connGameLogDB() { }else{ logDBUrl = "mongodb://root:lyMaple525458@10.0.1.20:27017/heijiao_gamelog?authSource=admin"; } - let client = await MongoClient.connect(logDBUrl,{maxPoolSize:10}); + let client = await MongoClient.connect(logDBUrl,{ + maxPoolSize:10, + maxIdleTimeMS: 5*60*1000 + }); logDB = client.db(`gameLog${G.config.serverId}`); return logDB; } diff --git a/src/setMongodb.ts b/src/setMongodb.ts index 8ab7e8b..b157290 100644 --- a/src/setMongodb.ts +++ b/src/setMongodb.ts @@ -441,13 +441,22 @@ export async function initMongoDB() { //可结合查看:node_modules\mongodb\lib\connection_string.js //maxPoolSize默认值:100 - let option:MongoClientOptions; + /** + * MongoDB连接池具有多个参数,用于控制连接池的行为和性能。下面是一些常用的连接池参数及其作用: + * maxPoolSize:连接池的最大连接数。默认值为100。该参数决定了连接池中可以同时存在的最大连接数,超过这个数量后,新的连接请求会被阻塞。 + * minPoolSize:连接池的最小连接数。默认值为0。该参数决定了连接池中保持的最小连接数,当连接数少于这个数量时,连接池会自动创建新的连接实例。 + * maxIdleTimeMS:连接的最大空闲时间(毫秒)。默认值为0,表示连接不会被强制断开。该参数决定了连接在空闲一定时间后是否被断开,以释放服务器资源。 + * waitQueueTimeoutMS:连接请求的等待时间(毫秒)。默认值为0,表示无限等待。当连接池达到最大连接数时,新的连接请求会被放入等待队列中,该参数决定了连接请求在队列中的最长等待时间。 + */ + + let option:MongoClientOptions = { + //空闲5分钟后关闭 + maxIdleTimeMS: 5*60*1000 + }; //跨服只有1个,直接采用默认配置就行 if(G.argv.serverType != 'cross'){ if(PublicShared.getOpenServerDay() > 3){ - option = { - maxPoolSize: 10 - } + option.maxPoolSize=10; } } @@ -461,7 +470,8 @@ export async function initMongoDB() { console.log('connect crossmongodb ......'); //本服里,维持住跟跨服数据库的链接 let crossClient = await MongoClient.connect(G.config.crossMongodbUrl,{ - maxPoolSize:10 + maxPoolSize:10, + maxIdleTimeMS: 5*60*1000 }); G.crossmongodb = new _mongodb(crossClient.db(G.config.corssDBName || "")); console.log('connect crossmongodb succ');