diff --git a/src/gameLog.ts b/src/gameLog.ts index ef10a87..04e8c09 100644 --- a/src/gameLog.ts +++ b/src/gameLog.ts @@ -9,7 +9,7 @@ async function connGameLogDB() { }else{ logDBUrl = "mongodb://root:lyMaple525458@10.0.1.20:27017/heijiao_gamelog?authSource=admin"; } - let client = await MongoClient.connect(logDBUrl); + let client = await MongoClient.connect(logDBUrl,{maxPoolSize:10}); logDB = client.db(`gameLog${G.config.serverId}`); return logDB; } diff --git a/src/setMongodb.ts b/src/setMongodb.ts index c73abc3..8ab7e8b 100644 --- a/src/setMongodb.ts +++ b/src/setMongodb.ts @@ -5,6 +5,7 @@ import { IndexDescription, IndexSpecification, MongoClient, + MongoClientOptions, ObjectId, OptionalId } from 'mongodb'; @@ -16,6 +17,7 @@ import {MongodbCollections} from './module/mongodb'; import {HuoDongFun} from './public/huodongfun'; import {zbsGroup} from './api_s2c/hbzb/zbs/fun'; import {clusterRunOnce} from './clusterUtils'; +import { PublicShared } from './shared/public/public'; const indexs: Partial<{ [k in keyof MongodbCollections]: IndexDescription[] }> = { item: [ @@ -349,9 +351,37 @@ const indexs: Partial<{ [k in keyof MongodbCollections]: IndexDescription[] }> = }; const crossIndexs: Partial<{ [k in keyof MongodbCollections]: IndexDescription[] }> = { + email: [ + { + key: {sid: 1} + }, + { + key: {uid: 1} + } + ], + fightLog: [ + { + key: {uid: 1, type: 1} + }, + { + key: {uid: 1} + }, + { + key: {ttl: 1}, expireAfterSeconds: 7 * 24 * 3600 + } + ], hbzb_user_cross: [ { key: {uid: 1}, unique: true + }, + { + key: {jifen: 1} + }, + { + key: {rank: 1} + }, + { + key: {zbsgroup: 1} } ], hbzb_user_zbs: [ @@ -377,13 +407,52 @@ const crossIndexs: Partial<{ [k in keyof MongodbCollections]: IndexDescription[] rankList: [ { key: {type: 1, idKey: 1}, unique: true - } + }, + { + key: {valArr: -1} + }, + ], + wzry_fight: [ + { + key: {jifen: 1} + }, + { + key: {uid: 1} + }, + { + key: {zkey: 1} + }, + ], + wzry_user_cross: [ + { + key: {jifen: 1} + }, + { + key: {uid: 1} + }, + { + key: {zkey: 1} + }, ] }; export async function initMongoDB() { + //mongodb连接数说明:https://blog.csdn.net/for_cxc/article/details/116859714 + //可结合查看:node_modules\mongodb\lib\connection_string.js + //maxPoolSize默认值:100 + + let option:MongoClientOptions; + //跨服只有1个,直接采用默认配置就行 + if(G.argv.serverType != 'cross'){ + if(PublicShared.getOpenServerDay() > 3){ + option = { + maxPoolSize: 10 + } + } + } + console.log('connect mongodb ......'); - let client = await MongoClient.connect(G.argv.serverType == 'cross' ? G.config.crossMongodbUrl : G.config.mongodbUrl); + let client = await MongoClient.connect(G.argv.serverType == 'cross' ? G.config.crossMongodbUrl : G.config.mongodbUrl, option); G.mongodb = new _mongodb(client.db(G.config.dbName || '')); console.log('connect mongodb succ'); @@ -391,7 +460,9 @@ export async function initMongoDB() { if (G.argv.serverType != 'cross') { console.log('connect crossmongodb ......'); //本服里,维持住跟跨服数据库的链接 - let crossClient = await MongoClient.connect(G.config.crossMongodbUrl); + let crossClient = await MongoClient.connect(G.config.crossMongodbUrl,{ + maxPoolSize:10 + }); G.crossmongodb = new _mongodb(crossClient.db(G.config.corssDBName || "")); console.log('connect crossmongodb succ'); }