4.4.11ãã> = 4.6.1ã«ã¢ããã°ã¬ãŒãããåŸãã©ã³ãã ã«åæããããã³ã°ãŒã¹ã¯åæ¥ç¶ããŸããã
ãã³ã°ãŒã¹ããŒãžã§ã³ïŒ4.6.5
mongodbããŒãžã§ã³ïŒ3.2.9
ããã¯ç§ãæ¥ç¶ãäœæããæ¹æ³ã§ãïŒ
var uri = 'mongodb://USENAME:PASSWORD<strong i="9">@host1</strong>:port1,host2:port2/database?authSource=admin';
var options = {};
options.server = {
auto_reconnect: true,
poolSize: 5,
socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 },
reconnectTries: 3000
};
options.replset = {
auto_reconnect: true,
poolSize: 5,
socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 },
reconnectTries: 3000
};
var db = mongoose.createConnection(uri, options);
mongoose.connection.on('error', function(err) {
console.log('MONGODB ERROR MONGOOSE LEVEL ' + server, err);
});
db.on('connecting', function() {
console.info('MONGODB ' + server + ' connecting.');
});
db.on('error', function(err) {
console.log('MONGODB ERROR ' + server, err);
});
db.on('close', function(err) {
console.log('MONGODB CLOSE ' + server, err);
});
db.on('connected', function() {
console.info('MONGODB ' + server + ' connected successfully.');
});
db.once('open', function callback() {
console.info('MONGODB ' + server + ' opened successfully.');
});
db.on('reconnected', function() {
console.info('MONGODB ' + server + ' reconnected.');
});
db.on('timeout', function() {
console.info('MONGODB ' + server + ' timeout.');
});
db.on('disconnected', function() {
console.info('MONGODB ' + server + ' disconnected');
});
ããã¯ç§ãåŸãäžé£ã®ã€ãã³ãã§ãïŒ
pid:3429 MONGODB geo_uri connected successfully.
pid:3429 MONGODB geo_uri opened successfully.
pid:3429 MONGODB dashboards_db connected successfully.
pid:3429 MONGODB dashboards_db opened successfully.
pid:3429 MONGODB tweet_analytics_db connected successfully.
pid:3429 MONGODB tweet_analytics_db opened successfully.
pid:3429 MONGODB fullcontact_enrichment_db disconnected
pid:3429 MONGODB ERROR fullcontact_enrichment_db { [MongoError: no valid replicaset members found]
name: 'MongoError',
message: 'no valid replicaset members found' }
pid:3429 MONGODB uri connected successfully.
pid:3429 MONGODB uri opened successfully.
pid:3429 MONGODB sync_reports_db connected successfully.
pid:3429 MONGODB sync_reports_db opened successfully.
pid:3429 MONGODB uri disconnected
pid:3429 MONGODB CLOSE uri
ãã®åŸãåæãããããŒã¿ããŒã¹ã¯ã©ããåæ¥ç¶ããŸããã åé¡ã®ã©ã³ãã ãªæ§è³ªã®ããããããåçŸããããã®ã³ãŒããæäŸããããšã¯ã§ããŸããã node.jsã¬ãã«çšåºŠã§é£œåããŠãããã®ãããã®ã§ã¯ãªãããšæããŸãã åæã®åå ãšã¯é¢ä¿ãªããèªåèªèº«ãåæ¥ç¶ããããã«ã§ããããšã¯ãããŸããïŒ
+1ããã®åé¡ã«é¢é£ããŠéå»5æ¥éã«2åã®åæ¢ããããŸããã çŸåšã®åé¿çã¯ã disconnected
ã€ãã³ããçºè¡ããããšãã«ãããã»ã¹ãæ瀺çã«ã¯ã©ãã·ã¥ãããããšã§ãïŒ process.exit(0)
ïŒã ãã®åŸãããã»ã¹ãåéãããæ¥ç¶ãæ£åžžã«åéãããŸãã
ç§ã®æšæž¬ã§ã¯ãmongooseã¯åæ¥ç¶ãè©Šã¿ãŸããã reconnectTries * reconnectInterval
ééå
ã§å€±æãããã®ãªã°ã¬ãã·ã§ã³ã®ããã«error
ã€ãã³ãã¯çºè¡ãããŸããïŒhttps://github.com/Automattic/mongoose/pull / 4653ïŒã ç§ãç¥ããªãã®ã¯ããªããã³ã°ãŒã¹/ã¢ã³ãŽãã©ã³ãã ã«åæãããã®ããšããããšã§ãã以åã¯ãã®ãããªåäœã¯ãããŸããã§ããã
ã©ã®ã¢ã³ãŽãã¹ãã£ã³ã°ãå®è¡ããŠããŸããïŒ mLabïŒ
AWSã§ãã¹ãããŠããŸãã æ®å¿µãªããã process.exit(0)
ã¯ç§ãã¡ã®éžæè¢ã§ã¯ãããŸããã
ïŒ4653ã§å€æŽãé©çšããåãåäœãããŸããã æ°æéåŸã®åæïŒ
2016-10-27T11:26:42 pid:5276 MONGODB sync_reports_db connected successfully.
2016-10-27T11:26:42 pid:5276 MONGODB sync_reports_db opened successfully.
.... 2 hours later
2016-10-27T13:45:45 pid:5276 MONGODB sync_reports_db disconnected
2016-10-27T13:45:45 pid:5276 MONGODB CLOSE sync_reports_db
error
ã€ãã³ãã¯çºè¡ãããŸãããïŒ ïŒ disconnected
ãã30ç§åŸã®ã¯ãã§ãïŒ
ããããåé¡ã®èª¬æã«ããã³ãŒããã芧ãã ããã ç§ãäœãééã£ãããšãããŠããªãéãã error
ã€ãã³ãçšã®ã€ãã³ããã³ãã©ãŒããããŸãã å®éãããã»ã¹ã¯ãŸã å®è¡äžã§ããããã³ã°ãŒã¹ã¯ä»ã®ã€ãã³ããããªã¬ãŒããŠããŸããã
4.6.5
以éãããæ°æ¥åãåé¡ãçºçããŠããŸããã©ã³ãã ã«åæããããšãããŒãããã»ã¹ãã¹ã¿ãã¯ããŸãã ãã ãã error
ã€ãã³ãã¯ãããŸããã 4.5.3
æ»ããšæ©èœããŸãã
@lorisã¯ããã4.6.6
https://github.com/Automattic/mongoose/commit/f7ebee0c992c45cdb27ba7f0675556b980cddaadã«é¢é£ããŠã
@mckã¯ãã httpsïŒ//github.com/Automattic/mongoose/commit/f7ebee0c992c45cdb27ba7f0675556b980cddaadã¯ãmongodbæ¥ç¶ã®åè©Šè¡ã¡ã«ããºã ã倱æãããšãã«error
ã€ãã³ããçºè¡ãããªãåé¡ãä¿®æ£ããŸããã ãããããããããªãã©ã³ãã ãªåæãçºçããŠããã®ãããããŸããã@ vkarpov15ãšããã¢ã€ãã¢ã¯ãããŸããïŒ
fwiwãä¿å/æŽæ°æäœïŒçŽ650kbã®æžã蟌ã¿ïŒãå®è¡ããããšãããšã40ã50ïŒ ã®ç¢ºçã§çºçããŸãã
ãããç§ã¯æ¬åœã«å€ãã®è¯ãã¢ã€ãã¢ãæã£ãŠããŸããã æ¥ç¶ã§close()
ãåŒã³åºããŠãããããäžåºŠèªåã§connect()
åŒã³åºãããšãã§ããŸãã @loris倧éã®ä¿å/æŽæ°ããããåŒãèµ·ãããŠããããã«èŠãããåæ§ã®çµéšããããŸããïŒ
ç§ãã¡ãããã«çŽé¢ããŠããŸãã ãµãŒãã¹ã®1ã€ã§ããšã©ãŒã€ãã³ãïŒds0XXXXX-a0.mongolab.com:XXXXXãžã®æ¥ç¶Nãã¿ã€ã ã¢ãŠãïŒãçºçãããã®åŸã«åæã€ãã³ããçºçããŸãã ãããŠãæ¥ç¶ãå確ç«ãããããšã¯ãããŸããã å¥ã®ãµãŒãã¹ã§ã¯ãDBã«å¯Ÿãã倧éã®èŠæ±ãã€ãŸã2Mã¬ã³ãŒãã®åé€åŸã«ãåæã€ãã³ããçºçããŸãã ãããŠãåæ¥ç¶ã§ããŸããïŒmongoose 4.6.6ãDBããŒãžã§ã³3.0.12ïŒã
æ°ååã«ãmLabã§ãmongodbãå®è¡ããŠããããšãåã³çºçããŸããïŒãããé¢é£ããŠãããã©ããã¯ããããŸããïŒã éãã¯ãšãªãå®è¡ããŸããããã¿ã€ã ã¢ãŠãããŸããïŒ unhandledRejection { MongoError: connection 0 to ds****-a0.mongolab.com:**** timed out }
ã disconnected
ã€ãã³ãã¯é©åã«çºè¡ãããŸãããããã®åŸã¯äœããããŸããã error
ã reconnected
ãªã©ã¯ãããŸããããããã£ãŠããã®WebãµãŒããŒã¯HTTPãªã¯ãšã¹ããå®è¡ããã³åä¿¡ãç¶ããŸãããããããã¡ãªã³ã°ãããŠè¿ãããªããã³ã°ãŒã¹ã¯ãšãªãå®è¡ãç¶ãããããåèµ·åãããŸã§ãã¹ãŠã¿ã€ã ã¢ãŠãããŸããã
ãã³ã°ãŒã¹ã®ã»ããã¢ããïŒããŒã7.0.0ã§ã¯4.6.5ïŒïŒ
const mongoConnectOpts = { reconnectTries: 10, reconnectInterval: 500, socketOptions: { keepAlive: 300000, connectTimeoutMS: 30000 } };
mongoose.connect(process.env.MONGODB_URI, { server: mongoConnectOpts, replset: mongoConnectOpts });
mongoose.connection.on('error', err => {
console.log({ event: 'mongoose:error', ...err });
process.exit(0);
});
mongoose.connection.on('connected', () => console.log({ event: 'mongoose:connected' }));
mongoose.connection.on('disconnected', () => console.log({ event: 'mongoose:disconnected' }));
mongoose.connection.on('reconnected', () => console.log({ event: 'mongoose:reconnected' }));
äžæçãªåé¿çã¯ã disconnected
ã€ãã³ãã§ãprocess.exit(0)
å®è¡ããŠãWebãµãŒããŒã匷å¶çã«åèµ·åããŠæ°ããmongodbæ¥ç¶ãã»ããã¢ããããããšã§ãã äœãæ¡ã¯ïŒ
ãããç§ã¯ä»¥åã«mlabã§ãã®çš®ã®ããšãèµ·ãã£ãŠãããšèããããšããããŸãã ãã®å ŽåãTBHã¯ãµãŒããŒãã¯ã©ãã·ã¥ãããŠåèµ·åããã ãã§ãæ¬åœã«é ãããã®ãããããã¯ãŒã¯ã¯mongodbãã©ã€ããŒã«åé¡ãåŒãèµ·ããåŸåããããããããããã°ããã«ã¯mlabãšã®èª¿æŽãå¿ èŠã«ãªããšæããŸãã
çŸåšäœãåé¡ãªã®ãïŒmongooseãmongo driverãmlabãherokuïŒã¯ããããŸããããéå»æ°æ¥éãéãmongooseã¯ãšãªãå®è¡ããWebãªã¯ãšã¹ããå®è¡ãããšïŒå¿çã«30ç§ä»¥äžãããïŒãherokuãªã¯ãšã¹ããããªã¬ãŒãããŸãã¿ã€ã ã¢ãŠãïŒããã¯ã30ç§ä»¥äžãããWebãªã¯ãšã¹ããã¿ã€ã ã¢ãŠãããherokuã®ã¡ã«ããºã ã§ãïŒã ãã®Webãªã¯ãšã¹ããã¿ã€ã ã¢ãŠãã«ãªããšããã³ã°ãŒã¹ã¯ãšãªãå¿
èŠãšãããã®ãµãŒããŒäžã®åŸç¶ã®Webãªã¯ãšã¹ããã¿ã€ã ã¢ãŠãããŸãã å®éã®åé¡ã¯ãZEROã€ãã³ãããã³ã°ãŒã¹ã«ãã£ãŠããªã¬ãŒãããããšã§ãïŒ error
ã close
ã disconnected
ãªã©ã¯ãããŸãã...ïŒããã®ããããæ€åºããæ¹æ³ããããŸããããµãŒããŒãåæããŠåèµ·åããŸãã ãã³ã°ãŒã¹ã®èšå®æ¹æ³ã¯æ¬¡ã®ãšããã§ãã
mongoose.Promise = global.Promise;
mongoose.set('debug', process.env.NODE_ENV === 'development');
const mongoConnectOpts = { reconnectTries: 10, reconnectInterval: 500, socketOptions: { keepAlive: 300000, connectTimeoutMS: 30000 } };
mongoose.connect(process.env.MONGODB_URI, { server: mongoConnectOpts, replset: mongoConnectOpts });
mongoose.connection.on('error', err => {
logfmt.log({ event: 'mongoose:error', ...err });
process.exit(0);
});
mongoose.connection.on('connected', () => logfmt.log({ event: 'mongoose:connected', uri: _.truncate(process.env.MONGODB_URI) }));
mongoose.connection.on('disconnected', () => {
logfmt.log({ event: 'mongoose:disconnected' });
process.exit(0);
});
mongoose.connection.on('close', () => logfmt.log({ event: 'mongoose:close' }));
mongoose.connection.on('reconnected', () => logfmt.log({ event: 'mongoose:reconnected' }));
// Setup Redis cache (Default cache TTL: 60 seconds)
cachegoose(mongoose, { engine: 'redis', client: redisCache }, process.env.NODE_ENV === 'development');
@Iorisã¯ã
@ vkarpov15ããããã§ãã¯ããããšããŸããããã°ã¯æ¬çªç°å¢ãå®è¡ããäœè£ããªããããç°¡åã§ã¯ãããŸããã
@aartiles @ mck- @lushchickçããã¯ãã³ã°ãŒã¹ãã£ãã·ã¥ãã©ã°ã€ã³ã䜿çšããŠããŸããïŒ
ããã¯https://github.com/christkv/mongodb-core/issues/148ã«é¢é£ããŠããå¯èœæ§ããã
ãã³ã°ãŒã¹ãã£ãã·ã¥ãã©ã°ã€ã³ã¯äœ¿çšããŠããŸããã
ç§ã¯ãŸã ããã調æ»ããŠããŸããç§ããããŸã§ã«ããªãã«èšãããšãã§ããããšïŒ
4.6.5
ã«è¡šç€ºããã 4.6.4
4.6.5
ã«ããŠã³ã°ã¬ãŒããããšãåé¡ãä¿®æ£ãããŸãïŒéãã¯ãšãªã®å®è¡äžãé«éã¯ãšãªãå®è¡ãããŸãïŒç§ã¯ããã«æãäžããŸããããåé¡ã¯[email protected]
ãžã®ã¢ããã°ã¬ãŒãã«ããããã°ã®ããã³ãããã¯https://github.com/mongodb/node-mongodb-native/pull/1418ã«ãã
ã¿ã€ããã¹ãä¿®æ£ããããã§ããããã®eventNameïŒã¿ã€ããã¹ããïŒã¯äžéšã®æ
åœè
ã«ãã£ãŠäœ¿çšãããŠããŸã
@lorisééã£ãã€ãã³ãåãæã€æ®ãã®åç §ãã©ãã«ãããç¥ã£ãŠããŸããïŒ PRãäœæããŠä¿®æ£ããããšã¯ã§ããŸãããèŠã€ãããŸããã
@jakesjewsãåç §ãèŠã€ããããšãã§ããªãã®ã§ãç§ã®ãã·ã³ã§äžäžèŽã®ããŒãžã§ã³ããã§ãã¯ã¢ãŠãããå¯èœæ§ãããåå ã«ã€ããŠééã£ãŠããå¯èœæ§ããããŸãã
åæ§ã®åé¡ããããŸãïŒåæåŸã®åæ¥ç¶ã®å€±æã ããã¯ãmongoose dbæäœããã³ã°ã¢ããããããšã§ã¯ã©ã€ã¢ã³ãã«çŸããŸãïŒæäœãããã¡ãªã³ã°ãä»ããŠã¿ã€ã ã¢ãŠãããŸãïŒã
@jakesjewsç§ã®åé¡ã¯ã¬ããªã«ã»ããã«ãåºæã§ãããåäžããŒãæ¥ç¶ã§ã¯çºçããŸããã ã³ã¢replset.jsã詳ãã調ã¹ãŸãã
node-mongodb-nativeå ã§ãããã°ãã°ãæå¹ã«ããŠãHAåæ¥ç¶ãæåŸ ã©ããã«æ©èœããŠãããã©ããã確èªããŸããã
attemptReconnect for replset with id successful resuming topologyMonitor 1
ããã¯æã«åäžã®ããŒãéreplsetã®åæ¥ç¶ãè¡ãããã«ããããæ£åžžã«attemptReconnectãè¡ã£äž»åŒµããŒãMongoDBã®ãã€ãã£ããã©ã€ãã«ããããããããã³ã°ãŒã¹ã¯ãæ¥ç¶ãŸãã¯åæ¥ç¶ã€ãã³ããçºããããšã¯ãããŸããã
@lorisãè¿°ã¹ãããã«ããã®åé¡ã¯ã¬ããªã«ã»ãããžã®åæ¥ç¶ã«çŽæ¥é¢é£ããŠãããããprocess.exitïŒ0ïŒ->ãµãŒãã¹ã®åèµ·åã¯æ©èœããŸããïŒç§ã®å ŽåïŒããããçæ³çã§ã¯ãããŸããã
@ mck-ããªããšåãã§ã 4.5.3ã«
ã¬ããªã«ã»ããã®åæ¥ç¶ã®åé¡ãåããŠçºçãã4.6.0ã§å€±æãå§ããåã«ã4.5.10ãŸã§ã¢ããã°ã¬ãŒãã§ããŸãã çŸåšã®æšæž¬ã§ã¯ãmongodbãã©ã€ããŒ2.2.9ãžã®ã¢ããã°ã¬ãŒãã«é¢é£ããŠããå¯èœæ§ããããŸãã
@lorisãã¹ãã±ãŒã¹ãæäŸããŠãè©ŠããŠã¿ãããšãã§ããŸããïŒ
ç§ã¯ãŸã ãããèŠãŠããŸããç§ã¯ä»¥åã«ã¿ã€ããã¹ä¿®æ£ã³ãããã«ã€ããŠééã£ãŠããŸããã ç¯äººã¯https://github.com/christkv/mongodb-core/pull/146/commits/09caa9d1e5423acd2f8f154f7b7430028e77e57fã®ããã§ã
ãã¹ãã±ãŒã¹ã®æäŸã¯ã次ã®ããã«ããè¡ãããªããããå°ãè€éã§ãã
4.6.8
ãããã©ã«ãèšå®ã§ããŒã«ã«ãã¹ãmongodbïŒ3.2ïŒã«æ¥ç¶poolSize
ãããã©ã«ãã§ã¯ãªã50
ã«èšå®ããŠãåé¡ãä¿®æ£ããŸãmongodb-core
ããåã®ã³ãããããã§ãã¯ã¢ãŠããããšãåé¡ãä¿®æ£ãããŸãïŒé«éå®è¡ã®é«éã«ãŒãã¯ãé·æéå®è¡ã«ãŒãã®åŠçäžã«æ°ããªç§ã§æ»ããŸãïŒïŒããã©ã«ãã®ããŒã«ãµã€ãºã§ïŒãã®ä¿®æ£ã¯ãã¡ããã©ãã®åé¡ã解決ãããããããŸããMongoã®ã³ã¢ã«äžéžããŸããã
@lorisããããŒã«ãµã€ãºãå¢ãããšåœ¹ã«ç«ã¡ãŸãã mongodbãµãŒããŒãpoolSize
è¶
ãããªã¯ãšã¹ããåæã«åŠçã§ããªããšããäœéåè»ã®åé¡ãçºçããŠããããã§ãã ããŒã«ãµã€ãºãå¢ãããšåœ¹ç«ã¡ãŸããããŸã倧ããããªãã§ãã ãããããããªããšãWiredTigerã§ããã©ãŒãã³ã¹ã®åé¡ãçºçãå§ããŸãã
ããã
ããã«é¢ããæŽæ°ã¯ãããŸããïŒ åãåé¡ãçºçããŠããŸããã¬ããªã«ã»ããã䜿çšãããšãauto_reconnectãæ©èœããŸããã mongodb2.2.11ã§mongoose4.7.0ãè©ŠããŸãããããŸã åæ¥ç¶ããŠããŸããã ç§ã¯mongodããŒãžã§ã³3.2.10ã䜿çšããŠããŸãã
ç§ã¯ãã¹ãŠãåäžã®ãã¹ãïŒã©ãããããïŒã§å®è¡ããŠãããmongodã®3ã€ã®ã€ã³ã¹ã¿ã³ã¹ãç°ãªãããŒã¿ããŒã¹ãã£ã¬ã¯ããªã®ç°ãªãããŒãã§å®è¡ãããŠããŸãã ãããåé¡ã«ãªãã¯ãã§ã¯ãªãããã§ãããç§ã¯mongo / mongoose / node / javascriptãåããŠäœ¿çšããŸãã ãã³ã°ãŒã¹ã䜿çšããããŒãã¢ããªãåããã¹ãã§å®è¡ãããŠããŸãã
ãã¹ãŠã®mongodããã»ã¹ãã·ã£ããããŠã³ããã ãã§ãããåçŸã§ããŸã
ïŒlaunchctl stop mongod01; launchctl stop mongod02; launchctl stop mongod03ïŒ
æ¥ç¶ãéãããããšããã¡ãã»ãŒãžãåŸ
ã£ãŠããåèµ·åããŸãïŒlaunchctlã³ãã³ãã®ãstopãããstartãã«çœ®ãæããŸãïŒã ç§ã®ã¢ããªã¯mongoã«åæ¥ç¶ããŸããã
ã¬ããªã«ã»ãããšããŠæ§æãããŠããªãmongodã®åäžã€ã³ã¹ã¿ã³ã¹ã§åããã¹ããå®è¡ãããšãmongooseã¯æ£åžžã«åæ¥ç¶ããŸãã
ãã°ãæäŸããããããã圹ç«ã€å Žåã¯ããããè©ŠããŠã¿ãŠãã ããã
ããã€ãæãäžããåŸãç§ã¯åé¡ã®1ã€ã®åå ãèŠã€ãããããããªããšæããŸãã autoreconnectãtrueã®å Žåãæ¥ç¶ãããã¡ãã¢ã¯ãã£ãã«ãªãããšã¯æ³å®ãããŠããªãããã§ãhttps://github.com/Automattic/mongoose/blob/master/lib/drivers/node-mongodb-native/connection.js#L153æ¥ç¶æã«ã€ãã³ããéããŸãã ãã ããmongodb-native https://github.com/mongodb/node-mongodb-native/blob/2.2/lib/replset.jsã®replsetã¯ã©ã¹å ã«autoReconnectããããã£ãèšå®ãããŠããªãããã1ã€ã®ããŒãããã®ãã¹ãŠã®ã¯ããŒãºã€ãã³ããããã¡ãæ°žç¶çã«æå¹ã«ãªããŸãã ã³ãããhttps://github.com/eflexsystems/mongoose/commit/5ac12727f34b41791f94643b66c8cc88aff4d66aã§éãè¯ãã£ãã®ã§ããããã«ãªã¯ãšã¹ããè¡ãåã«ãä»ã®åé¡ãçºçãããã©ããã確èªããããã«ããå°ãæéããããããšæããŸãã
@joeldodsonããªãã¯ç§ãçµéšããã®ãšåãåé¡ã説æããŠããŸãã 4.6.0以äžã®ãããºã¢ãããªãªãŒã¹ã«åé¡ãå«ãŸããŠããããã§ãã ãã®éã4.5.10ãè©ŠããŠã¿ãŸãããããã¯replsetã«åæ¥ç¶ãããŠãããåäžã®æ¥ç¶ã§åé¡ãããŸããã
@jakesjewsãš@ kog13ã«æè¬ããŸã
4.5.10ãè©ŠããŸããããã¬ããªã«ã»ãããåèµ·åããåŸãmongooseãåæ¥ç¶ããŸãã ãã ããã¬ããªã«ã»ããå ã®ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ãåæ¢ããåŸãdb.readyStateãã¯ãªã¢ãããŠããªãããã§ãã ãªã¯ãšã¹ããæåŠãããã©ãããå€æããããã«ããããã§ãã¯ããŠããŸãïŒã¢ããªãDBã«åæ¥ç¶ããã®ãåŸ ã£ãŠãã¥ãŒã«å ¥ããªãããã«ããŸãïŒã ãŸãã4.5.10ã§ã¯åæãŸãã¯æ¥ç¶ãéãããããšããéç¥ãå±ããŸããã§ããã
ã¢ããªã®èµ·åæã«DBãå©çšã§ããªãå Žåã«æ¥ç¶ãè©Šã¿ãããã«ã5ç§ã®ã¿ã€ããŒã§ã«ãŒãã«å ¥ãããžãã¯ããã§ã«ãããŸãã db.onïŒ 'closed'ãfunctionïŒïŒ{...}ïŒãã³ãã©ãŒã§ãããåŒã³åºããŠã¿ãŸããããæ£åžžã«æ©èœããŠããããã§ãã ããããç§ã®æžå¿µã¯ãæ瀺çã«æ¥ç¶ããããšãããšãå éšã®åæ¥ç¶ããžãã¯ãšç«¶åãããã©ããã§ãã ã¬ããªã«ã»ããã§ã¯åæ¥ç¶ãè¡ãããŠããªãããã§ãã®ã§ã倧äžå€«ã ãšæããŸãã ãŸãããµãŒããŒãšreplsetã®äž¡æ¹ã®æ¥ç¶ãªãã·ã§ã³ã§auto_reconnectãfalseã«èšå®ããŸãã
@ jakesjews-äžèšã®ããããè©ŠããŸããããåæ¥ç¶ã§ããŸããã§ããã äœããèŠéãããããããŸãããããã®ãããã¯ãcloseã€ãã³ããçæãããreadyStateãæŽæ°ãããããã«ããããšã«é¢ãããã®ã®ããã§ããã
誰ããæã£ãŠãããªããauto_reconnectã®ãããããã以äžè©ŠããŠã¿ãŠããããã§ãã ç§ãæãäžããŠãããŸãã
ããããšãã
äžèšã®ãããã«å ããŠã @ joeldodsonã¯ãã¬ããªã«ã»ããã¢ãã¿ãŒæ¥ç¶ãåç¶ããããšã確èªããããã®ä¿®æ£ãå«ãŸããŠããmongo-coreã®ææ°ãªãªãŒã¹ã«äŸåããå¿ èŠããããŸãã ããªããç§ã®ãã©ãŒã¯ãè©ŠããŠã¿ããªããããã¯ãã§ã«ãããæã£ãŠããã¯ãã§ãã
ãã³ã°ãŒã¹ã§ã®ã¿ã€ã ã¢ãŠããšãã§ã€ã«ãªãŒããŒã«é¢ããŠã¯ãããªãè¯ãå Žæã«ãããšæããŸãã ä»ã®èª°ãããããè©ŠããŠã¿ããå Žåã¯ãsocketOptionsã§socketTimeoutã0ã«èšå®ããããšã«å ããŠãç§ã®ãã³ã°ãŒã¹ã®ãã©ãŒã¯ã䜿çšããããšããå§ãããŸãã
socketTimeoutã0ã«èšå®ããçç±ã¯ãmongo-coreã«ãã°ããããããã§ãåé¡ãå ±åããå¿ èŠãããããã§ãã ãã®åé¡ã¯ãæ¥ç¶ããŒã«ãåçã«çž®å°/æ¡å€§ããããšãåå ã§çºçããŸãã ããŒã«ãæ©èœããæ¹æ³ã¯ãæ°ããæ¥ç¶ãè¿œå ãããã³ã«ããã®æ¥ç¶ã30ç§ééã¢ã¯ãã£ãã«ãªããšéããããšã§ãã ã¿ã€ã ã¢ãŠãã€ãã³ãã¯ãããŒã«ããã®åé€ãããªã¬ãŒããã¿ã€ã ã¢ãŠãã®æ°ã30åã®æ¥ç¶è©Šè¡ã®å¶éãšæ¯èŒãããã§ãã¯ãå®è¡ããŸãã 2ç§ããšã«å®è¡ãããã¿ã€ã ã¢ãŠãã®æ°ãã¯ãªã¢ããããŒãããŒãããããŸããã30以äžã®ãªã¯ãšã¹ãã䞊è¡ããŠãã¥ãŒã«å ¥ãããããšãããŒãããŒãã®éã«ãã¹ãŠã®ãªã¯ãšã¹ããã¿ã€ã ã¢ãŠãããæ¥ç¶ããŒã«ãç Žå£ãããŸãã ä»ã®ãšãããæ¥ç¶ã®ã¿ã€ã ã¢ãŠãã0ã«èšå®ãããšãæ¥ç¶ãéã¢ã¯ãã£ãã®å Žåã«ããŒã«ã«æ»ãããã®ãé²ããåé¡ãåé¿ããŸãã åé¡ãåçŸããå Žåã¯ãæ¥ç¶ããŒã«ã®ãµã€ãºãçŽ50ã«èšå®ãã50ã®äžŠåã¯ãšãªãå®è¡ããŠã¿ãŠãã ããã ãã®åŸãããŒã«ã¯çŽ30ç§ã§ç Žå£ãããŸãã ã¿ã€ã ã¢ãŠãã«ã¯ç¬èªã®ã¿ã€ã ã¢ãŠãããããããã¿ã€ã ã¢ãŠãã¯ã¬ããªã«ã»ããããã§ãã¯ããããŒãããŒãã«åœ±é¿ãäžããªãããšã«æ³šæããŠãã ããã
ç§ã¯æè¿ä»äºã«å¿æ®ºãããŠããã®ã§ãããããã¹ãŠã®å€æŽããŸãšããæ©äŒã¯ãããŸããã§ããããããã«ãããæã«å ¥ããããšæã£ãŠããŸãã
ããäžåºŠ@jakesjewsã«æè¬ããŸãã ç§ã¯ããªãã®ãã³ã°ãŒã¹ãšmongodb-coreãªããžããªãåŒã蟌ã¿ãŸããã åæ¥ç¶ã¯æ©èœããŸããã Mongoã®åäžã€ã³ã¹ã¿ã³ã¹ã䜿çšããå Žåã«çºçããŸããããconnectedãã€ãã³ããšãreconnectedãã€ãã³ãã¯ååŸãããŸããã§ããã ãŸããreadyStateã¯ãªã»ãããããŠããªãããã§ãåæ¥ç¶åŸã0ã®ãŸãŸã§ãã
ãã°ã®ãã¹ããåéããæäŒãã§ããŠããããã§ãã
ãŸã [email protected]
ãã®åé¡ã«é¢ããŠäœãæ°ããããšã¯ãããŸããïŒ
ããã§ãåé¡ãäœéšããŸãã æ¥ç¶ã®åé¡ã®ããããã³ã°ãŒã¹ããŒãžã§ã³ã®ã¢ããã°ã¬ãŒããå ã«æ»ãå¿ èŠããããŸããã çŸåšãæ°ç§ãããã¯ãšãªã¯æ¥ç¶ãã¿ã€ã ã¢ãŠãããŸããã以åã¯ããã§ã¯ãããŸããã§ããã
ãã®åé¡ã«å¯ŸåŠããå¿
èŠããããŸããããããªããšãããã±ãŒãžã䜿çšã§ããŸããã
æéãããã°ããããã@jakesjewsãœãªã¥ãŒã·ã§ã³ãè©ŠããŠ
åé¡ãmongo-coreã®ãã°ã§ããå Žåãããã¯å®éã«ã¯mongooseã®åé¡ã§ã¯ãããŸããã ææ°ããŒãžã§ã³ã®ãã³ã°ãŒã¹ã§åé¡ãçºçããå Žåã mongodb-core
ãªããžããªã§åé¡ãå ±åã§ããŸããïŒ
åé¡ã®ããmongodb-core
ã®ããŒãžã§ã³ã«äŸåããããã«æŽæ°ãããŠãããããå®éã«ã¯mongoose
ã®åé¡ã§ãã ãã¶ãmongoose
ã¯ä»¥åã®ããŒãžã§ã³ã®mongodb-core
埩å
ããå¿
èŠããããŸãã
ããšãèŠãŠ@jakesjews [email protected]ãäŸåãã[email protected]é 次ã«äŸåãã [email protected]ããªãããã®ä¿®æ£ãé©çšãããã©ãŒã¯ã¯ããã®åé¡ãä¿®æ£ããããã«å¿ èŠãšããããã¹ãŠã®ã ããäžèŠå¯äœçšã¯ãããŸãããïŒ
ãããŠããªãã®ãã©ãŒã¯ãèŠããšããã®ã³ãããã¯4.7.xããã³/ãŸãã¯4.8.x PRã«å¿ èŠãªå¯äžã®å€æŽã§ããïŒ
@Koslunãã©ãŒã¯ã¯
ãããç§ã®ãœã±ãããªãã·ã§ã³ãä»ã©ã®ããã«èŠãããã§ãã
var opts = {
server: {
socketOptions: {
keepAlive: 1,
socketTimeout: 0
}
},
replSet: {
socketOptions: {
keepAlive: 1,
socketTimeout: 0
}
}
@jakesjewsããããŸãããè¿ éãªèª¬æã«æè¬ããŸã:)ã
ãã®ãã°ã®ä¿®æ£ã衚瀺ãããmongodb-coreã®ããŒãžã§ã³ãç¥ã£ãŠããŸããïŒ ãŸãã¯ã远跡ã§ããåé¡ãPRããŸãã¯ã³ãããããããŸããïŒ
@Koslunã³ã¡ã³ãã«é¢ããæŽæ°ã¯
ãã®åé¡ã®æŽæ°ã¯ãããŸããïŒ
ãã®åé¡ã¯2016幎ãããŸã éããŠããŸãïŒopen_mouthïŒ
ãã®åé¡ã¯ãmongodbãã©ã€ããŒ3.3.4ãæèŒããmongoose 5.xãšããŒãžã§ã³4.xã®MongoDBãµãŒããŒã§ãçºçããå¯èœæ§ãããã®ã§ããããïŒ ïŒèãïŒ
åæ¥ç¶ãæåãããšãã«reconnectTriesããªã»ããããããã©ããã誰ãç¥ã£ãŠããŸããã
Foxã€ã³ã¹ã¿ã³ã¹ãreconnectTriesã30ã«èšå®ãããŠããå Žåãåæããããã³ã°ãŒã¹ã¯5åè©Šè¡ããæ¥ç¶ã¯æåããŸãã
次åæ¥ç¶ã倱ããããšããåè©Šè¡ã®ã«ãŠã³ã¿ãŒã¯äœã«ãªããŸããïŒ
30ååæ¥ç¶ãè©Šã¿ãŸããïŒ
ãŸãã¯25åïŒ
@ szabolcs-szilagyiã¯ãããã ãã useUnifiedTopology
ãtrue
èšå®ããªãå Žåã«éããŸãã
@ bhaveshvyas007ã¯ãããã§ãã é¢é£ããã³ãŒãã¯æ¬¡ã®ãšããã§ã
åŸäžã®ããã«ïŒ
useUnifiedTopology
ãªãã§Mongoose 5.xãå®è¡ããŠããå Žåã¯ã MongoDBæ¥ç¶ã管çããããã®ãã®ã¬ã€ãããèªã¿
useUnifiedTopology
ã§Mongoose 5.xãå®è¡ããŠããå Žåããã®åé¡ã¯åœ±é¿ããŸããã
æãåèã«ãªãã³ã¡ã³ã
@Koslunãã©ãŒã¯ã¯
ãããç§ã®ãœã±ãããªãã·ã§ã³ãä»ã©ã®ããã«èŠãããã§ãã