ããã©ã«ãã§ã¯ãæåã®æ¥ç¶ã倱æãããšãã³ã°ãŒã¹ã¯ãšã©ãŒãã¹ããŒããããŒããã¯ã©ãã·ã¥ãããŸãã
ãããã£ãŠããã®ãã°ãåçŸããã«ã¯ããšã©ãŒããã£ããããŠã¯ã©ãã·ã¥ãé²ãããã«ãã¢ããªã«æ¬¡ã®ã³ãŒããå¿ èŠã§ãã
db.on('error', console.error.bind(console, 'connection error:'));
ããã§ããã®ãã°ã次ã®ããã«åçŸã§ããŸãã
[MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]]
äºæ³ãããåäœïŒ autoreconnect
ããã©ã«ãã§trueã«èšå®ãããŠãããããMongoDBã«åã³ã¢ã¯ã»ã¹ã§ããããã«ãªããšããã«mongooseãæ¥ç¶ã確ç«ããããšãæåŸ
ããŸãã
泚ïŒæåã®æ¥ç¶ã¯æåããããå®è¡æã«MongoDBãžã®æ¥ç¶ã倱ãããå Žåãèªååæ¥ç¶ã¯æåŸ ã©ããã«æ£åžžã«æ©èœããŸãã åé¡ã¯ãã¢ããªã®èµ·åæã«MongoDBãå©çšã§ããªãå Žåã®äžæŽåã§ãã
ïŒãããæãŸããåäœã§ãããéçºè ããšã©ãŒããã£ãããããããŒããã¯ã©ãã·ã¥ãããããšã§ãã®ç¶æ³ãåŠçããããšãæšå¥šãããŠããå Žåãç§ã¯ãããåãå ¥ããããšãã§ããŸãããæ確ã«ãã䟡å€ããããŸããïŒ
ããŒãv4.4.1ã [email protected] ã [email protected] ã [email protected]
確èªã§ããŸãã
ããŒã6ã7ããã³ã°ãŒã¹ïŒå°ãªããšã6ãæïŒããã³ã°ãŒã¹3.2-3.4
ãããšäžç·ã«æ¥ãïŒ4890
ããã¯mongodb-core
åé¡ã ãšæããŸãã æåã®è©Šè¡ã倱æããå Žåã§ããåæ¥ç¶ãè©Šè¡ããå¿
èŠããããŸãããããåŸç¶ã®è©Šè¡ãšç°ãªãçç±ãããããªãããã§ãã
ããã§ãã®åé¡ãå ±åããããšãã§ããŸããïŒ
å®å šãªåçŸã¹ã¯ãªããã¯æ¬¡ã®ãšããã§ãã
const mongoose = require('mongoose');
const co = require('co');
mongoose.Promise = global.Promise;
const GITHUB_ISSUE = `gh-5169`;
exec()
.catch(error => {
console.error(`Error: ${ error }\n${ error.stack }`);
});
function exec() {
return co(function*() {
const db = mongoose.createConnection(`mongodb://localhost:27017/${ GITHUB_ISSUE }`);
db.on('error', (error) => {
console.error(`in an error ${ error }\n${ error.stack }`);
})
});
}
åçŸããŠãããŠããããšãã ç§ã¯mongodb-coreã調ã¹ãŸããã ããã¯ããã©ã€ããŒã®æå³ãããåäœã§ãã
ãã¹ãã«æ¥ç¶ã§ããªãå Žåããã©ã€ããŒã¯æåã®æ¥ç¶ã§å€±æããŸãã ããã¯ãå°éäžèœãªãã¹ãã§è¿ éã«é害ãçºçããããšãä¿èšŒããããã®èšèšã«ãããã®ã§ãã åæ¥ç¶åäœã¯ããã©ã€ããŒãæåã®æ¥ç¶ãå®è¡ããåŸã«ã®ã¿éå§ãããŸãã
äœããããã決ããã®ã¯ã¢ããªã±ãŒã·ã§ã³æ¬¡ç¬¬ã§ãã ããã¯ããã©ã€ããŒãããã«å€±æããå®éã«æ©èœããŠãããšæããããããªç¶æ ã«ãªããªãããã«ããããã®èšèšã«ãããã®ã§ãã
ãããã£ãŠããã©ã€ããŒãšç°ãªãåäœã¯çºçããªããšæããŸãã
ç§ã¯å®éãè¡åã¯äœã¬ãã«ã®ãã©ã€ããŒã«ãšã£ãŠåççã ãšæããŸãã ããã¯ã誀ã£ãŠééã£ããã¹ããŸãã¯ééã£ãããŒãã«æ¥ç¶ããããšããéçºè ãæ¯æŽããŸãã
ãããããã³ã°ãŒã¹ã§ããéçºè ã«åªããããšããããå Žåã¯ã次ã®ããšãæ€èšã§ããŸãã
error
ã€ãã³ããçºè¡ããå¿
èŠããããšæããŸãããããã§ãèªåçã«åæ¥ç¶ãè©Šã¿ãŸããïŒæ£ããèŠããŠããã°ãåé¿çã䜿çšããäœåºŠã倱æããåŸã«æçµçã«æ¥ç¶ãããšãã«ãã¢ããªã«ãã£ãŠæ¢ã«ãã¥ãŒã«å ¥ããããŠããã¯ãšãªãåžæã©ããã«å®è¡ãããŸããã ïŒããããããã¯ããäžåºŠãã¹ããã䟡å€ããããŸããïŒ
ããã¯å®éã«ã¯ãŸãšããªã¢ã€ãã¢ã ãšæããŸããããã«æ©èœãªã¯ãšã¹ãã®ã©ãã«ãä»ããŸã
ããããæåã®æ¥ç¶ã§é«éã«å€±æããããšã¯ãMongoDBãã©ã€ããŒå šäœã§ããªãäžè²«ããåäœã§ãããmongooseãããããµããŒãããã¡ãªããã¯ããŸããããŸããã
Strongloop Loopbackmongodbã³ãã¯ã¿ããã®ãã®æè¿ã®æçš¿ãé¢é£ããŠããå¯èœæ§ããããŸãã ãããã®lazyConnect
ãã©ã°ã¯ããšã³ããã€ã³ãã«å°éãããŸã§æåã®æ¥ç¶ã延æããŸãã ãã®å Žåãæåã®æ¥ç¶ã倱æãããšãããã©ã«ãã®æ¥ç¶æ倱èšå®ãæå¹ã«ãªããŸãïŒåè©Šè¡ããŸãïŒã
ç§ã®èå³ã¯ã³ã³ããã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã§ããããã§ã¯ããã³ã³ããã®èµ·åé åºããèšå®ããŠæåŸ ã§ããããšããããããŸãããããµãŒãã¹ã®å¯çšæ§ã®é åºãã¯ã§ããŸããã ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŒã«ã¯ãmongoãµãŒãã¹ããŸã å©çšã§ããªãå Žåã§ããmongoã³ã³ãããŒãã皌åäžãã§ããããšã確èªããå ŽåããããŸãã
ãã®ãããmongoã³ã³ãããŒã®éå§ã«1ç§ãããããµãŒãã¹ãå©çšå¯èœã«ãªããŸã§ã«5ç§ããããã¢ããªã³ã³ãããŒã®éå§ã«1ç§ããµãŒãã¹ãå©çšå¯èœã«ãªããŸã§ã«1ç§ãããå Žåãã¢ããªãµãŒãã¹ã¯mongoãµãŒãã¹ãå®è¡ããæåã®æ¥ç¶é害ãçºçããŸããæåã«èª¬æããããã«ã
Docker Composeã®ããã¥ã¡ã³ãã«ã¯ã次ã®ããã«æžãããŠããŸãã
Composeã¯ãã³ã³ãããŒããæºåãã§ããŠãããïŒç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠæå³ããããã®ã¯äœã§ãïŒãŸã§åŸ æ©ãããå®è¡ããããŸã§åŸ æ©ããŸãã ããã«ã¯æ£åœãªçç±ããããŸãã
ããšãã°ãããŒã¿ããŒã¹ã®æºåãæŽãã®ãåŸ ã€ãšããåé¡ã¯ãå®éã«ã¯åæ£ã·ã¹ãã ã®ã¯ããã«å€§ããªåé¡ã®ãµãã»ããã«ãããŸããã æ¬çªç°å¢ã§ã¯ãããŒã¿ããŒã¹ã䜿çšã§ããªããªã£ããããã¹ãããã€ã§ã移åãããããå¯èœæ§ããããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ããããã®ã¿ã€ãã®é害ã«å¯ŸããŠå埩åãããå¿ èŠããããŸãã
ãããåŠçããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã¯é害åŸã«ããŒã¿ããŒã¹ãžã®æ¥ç¶ã®å確ç«ãè©Šã¿ãå¿ èŠããããŸãã ã¢ããªã±ãŒã·ã§ã³ãæ¥ç¶ãåè©Šè¡ãããšãæçµçã«ã¯ããŒã¿ããŒã¹ã«æ¥ç¶ã§ããããã«ãªããŸãã
æåã®è§£æ±ºçã¯ãèµ·åæãšäœããã®çç±ã§æ¥ç¶ã倱ããããšãã®äž¡æ¹ã§ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã§ãã®ãã§ãã¯ãå®è¡
ãããã£ãŠãã³ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ã®ã³ã³ããã¹ãã§ã¯ããã«æ確ãªã®ã£ããããããŸããããããã®ã¹ã¿ã³ã¹ã¯äž¡æ¹ãšãæå¹ã§ããããã«èŠããŸãã
確ãã«ã®ã£ããã¯ãããŸãããæåã®æ¥ç¶ã倱æããå Žåã«åè©Šè¡ãããã©ããã決å®ãã責任ã¯ããªãã«ãããŸãã ãã¹ãŠã®ãã³ã°ãŒã¹ã¯ããã倱æããããšãããªãã«äŒããŸãã æ¬çªç°å¢ã§ïŒãŸãã¯ãã®ããšã«ã€ããŠã¯ä»»æã®ã³ã³ããã¹ãã§ïŒdocker composeã䜿çšãããšããçããã決å®ãäžããå Žåãæåã®æ¥ç¶é害ã®åè©Šè¡ãåŠçããã®ã¯ããªã次第ã§ãã
ã¹ã¿ã³ã¹2ãããã§ãã
æåã®æ¥ç¶ã倱æãããšãã«èªååæ¥ç¶ãå¿ èŠãªå Žåã¯ã次ã®ããã«åŠçããŸãã
function createConnection (dbURL, options) {
var db = mongoose.createConnection(dbURL, options);
db.on('error', function (err) {
// If first connect fails because mongod is down, try again later.
// This is only needed for first connect, not for runtime reconnects.
// See: https://github.com/Automattic/mongoose/issues/5169
if (err.message && err.message.match(/failed to connect to server .* on first connect/)) {
console.log(new Date(), String(err));
// Wait for a bit, then try to connect again
setTimeout(function () {
console.log("Retrying first connect...");
db.openUri(dbURL).catch(() => {});
// Why the empty catch?
// Well, errors thrown by db.open() will also be passed to .on('error'),
// so we can handle them there, no need to log anything in the catch here.
// But we still need this empty catch to avoid unhandled rejections.
}, 20 * 1000);
} else {
// Some other error occurred. Log it.
console.error(new Date(), String(err));
}
});
db.once('open', function () {
console.log("Connection to db established.");
});
return db;
}
// Use it like
var db = createConnection('mongodb://...', options);
var User = db.model('User', userSchema);
ãã³ã°ãŒã¹<4.11ã®å Žåã db.open()
代ããã«db.openUri()
ãã³ã°ãŒã¹4.11.7ã®å Žåããã®ææ³ã¯æ©èœããŸããã
ãã³ã°ãŒã¹4.13.4ã®å Žåãåã³æ©èœããŸãã
ç·šé2019/09/02ïŒããã«promiseRetry
ã䜿çšããããçã解決çããã
ããã«ã¡ã¯@ vkarpov15ãããçºçãããšãmongodb-coreã©ã€ãã©ãªããã®æªåŠçã®æåŠããã°ã«èšé²ãããŸãã
MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]
at Pool.<anonymous> (/Users/development/okkralabs/sem-server/services/sem-access/node_modules/mongodb-core/lib/topologies/server.js:336:35)
at emitOne (events.js:116:13)
at Pool.emit (events.js:211:7)
at Connection.<anonymous> (/Users/development/okkralabs/sem-server/services/sem-access/node_modules/mongodb-core/lib/connection/pool.js:280:12)
at Object.onceWrapper (events.js:317:30)
at emitTwo (events.js:126:13)
at Connection.emit (events.js:214:7)
at Socket.<anonymous> (/Users/development/okkralabs/sem-server/services/sem-access/node_modules/mongodb-core/lib/connection/connection.js:187:49)
at Object.onceWrapper (events.js:315:30)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
ããã¯ç°¡åã«åçŸã§ããŸããå©çšã§ããªãMongoDbãµãŒããŒã«æ¥ç¶ããŠã¿ãŠãã ããã
(node:2545) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]
(node:2545) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
ãããåŠçããæ¹æ³ã¯ãããŸããïŒ
@jorgearanda䜿çšããŠãããã³ã°ãŒã¹ã®ããŒãžã§ã³ãšãããã€ãã®ã³ãŒããµã³ãã«ãæäŸã§ããŸããïŒ
vkarpov15 @ç§ã¯@jorgecuestaããã®ã¡ãã»ãŒãžã ãšæããŸããïŒ
ãã£ãšãç§ã®ééãã æããªgithubãªãŒãã³ã³ããªãŒãããããããã¯ã ã£ã
@jorgecuestaãšãŸã£ããåããã®ã衚瀺ãããŸãã4.11.5ã䜿çšããŠããŸãããã5.0.0-rc2ã§ãåãããã«è¡šç€ºãããŸãã äžéšã®ã¢ãã«ãåãmongoã€ã³ã¹ã¿ã³ã¹ã§ç°ãªãããŒã¿ããŒã¹ã䜿çšããŠãããããcreateConnectionã䜿çšããŠããŸãã ããã¯ãmongoãããŠã³ããŠãããšãã«ãµãŒããŒãèµ·åãããšãã«çºçããŸãã
2018-01-07 13:05:23-05:00: [INFO] database - reusing existing connectioun for mongodb://localhost/eiss
2018-01-07 13:05:23-05:00: [INFO] database - initializing database connection to: mongodb://localhost/eiss
2018-01-07 13:05:23-05:00: [INFO] database - reusing existing connectioun for mongodb://localhost/eiss
2018-01-07 13:05:23-05:00: [ERROR] database - Mongoose connection error: MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
Unhandled rejection MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
at Pool.<anonymous> (/Users/bill/eiss4/js/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/server.js:503:11)
at emitOne (events.js:116:13)
at Pool.emit (events.js:211:7)
at Connection.<anonymous> (/Users/bill/eiss4/js/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:326:12)
at Object.onceWrapper (events.js:317:30)
at emitTwo (events.js:126:13)
at Connection.emit (events.js:214:7)
at Socket.<anonymous> (/Users/bill/eiss4/js/node_modules/mongoose/node_modules/mongodb-core/lib/connection/connection.js:245:50)
at Object.onceWrapper (events.js:315:30)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
ã¢ãã«ã¯ã䜿çšããŠããããŒã¿ããŒã¹ã®ååã䜿çšããŠæ¥ç¶é¢æ°ãåŒã³åºããŸãïŒä»¥äžïŒã ãµãŒããŒã®èµ·åæã«mongoãå®è¡ãããŠããéããããŒã¿ããŒã¹ãèµ·åããã³åæ¢ããŠãåé¡ãªãåæ¥ç¶ã§ããŸãïŒãšã©ãŒããã°ã«èšé²ããŸãïŒã ãã®åé¡ãèªãã§ããã©ã€ããŒãåææ¥ç¶ãç°ãªãæ¹æ³ã§åŠçããããšã«æ°ã¥ããŸãããããã¯ã¡ãã£ãšé¢åã§ãã @joeytwiddleã®åé¿çãè©ŠããŠã¿
const allConnections = {};
module.exports = function(dbName) {
const url = 'http://localhost/' + dbName;
let conn;
log.info('initializing database connection to: ' + url);
conn = allConnections[url];
if (!conn) {
log.info('creating new connection for ' + url);
conn = mongoose.createConnection(url, {
useMongoClient: true,
autoReconnect: true,
autoIndex: false,
reconnectTries: Number.MAX_SAFE_INTEGER
});
// Log database connection events
conn.on('connected', () => log.info('Mongoose connection open to ' + url));
conn.on('error', (err) => log.error('Mongoose connection error: ' + err));
conn.on('disconnected', () => log.error('Mongoose connection disconnected'));
allConnections[url] = conn;
}
else {
log.info('reusing existing connection for ' + url);
}
return conn;
}
äžèšã®å Žåã®@raythreeã¯ã .on('error')
ããããããåé¡ãªãã¯ãã§ãã 倱æããå Žåã«æåã®æ¥ç¶ãåè©Šè¡ããå Žåã¯ãasync / awaitã䜿çšããããšããå§ãããŸãã
let conn;
for (let i = 0; i < numRetries; ++i) {
try {
conn = await mongoose.createConnection(uri);
break;
} catch (error) {}
}
@ vkarpov15åçãé ããŠç³ãèš³ãããŸãããã4.11.14ãš4.13.4ã䜿çšããŠããŸã
@jorgecuesta do mongoose.connect(uri).catch(err => {})
@ vkarpov15 connectïŒïŒã¯æ¥ç¶ã€ã³ã¹ã¿ã³ã¹ãè¿ããŸããïŒ
const connection = mongoose.connect(uri || undefined, {useMongoClient: true});
connection.once('error', (e) => {
console.error(e, 'mongoose connection error.');
});
connection.once('connected', () => {
console.log('mongoose connected');
});
5.0.0ã§ã¯ã mongoose.connect()
ãäžè²«ããŠpromiseãè¿ãããã«å€æŽããŸããã 4.xã§ã¯ãæ¥ç¶ã€ã³ã¹ã¿ã³ã¹ãè¿ããŸããã .then()
ãš.catch()
ã䜿çšããããã await
䜿çšã§ããŸãã
ããã«ã¡ã¯@joeytwiddleã
Herokuãžã®ãããã€ã§ãåãåé¡ãçºçããŠããŸãã
MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
2017幎7æ12æ¥ã®ã³ã¡ã³ãã§ãåé¿ç/解決çã瀺ããŸããã ç§ã¯Mongoose / NodeãåããŠäœ¿çšããŸãã createConnectioné¢æ°ãã©ã®ãã¡ã€ã«ã«å ¥ããã¹ããæããŠããã ããŸããïŒ
ç§ã¯ãã³ã°ãŒã¹ãå®è¡ããŠããŸãïŒ^ 5.0.10ãããŒãïŒv9.4.0
也æ¯
@juancarlucci奜ããªãã¡ã€ã«ã«å ¥ããããšãã§ããŸãã ãããåŒã³åºãã ãã§ãã³ã°ãŒã¹ã€ã³ã¹ã¿ã³ã¹ãååŸããããã䜿çšããŠã¢ãã«ãäœæããŸãã
以åã®ã³ã¡ã³ããæŽæ°ããŠã䜿çšäŸã瀺ããŸããã
@joeytwiddle䜿çšäŸãããããšãïŒ ä¹Ÿæ¯ã
mongoã«æ¥ç¶ããããšãããšããšã©ãŒãã¹ããŒãããŸãã
connection error: { MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connection 0 to localhost:27017 timed out]
at Pool.<anonymous> (/home/wasd_xyz/Desktop/test/node_modules/mongodb-core/lib/topologies/server.js:505:11)
at emitOne (events.js:116:13)
at Pool.emit (events.js:211:7)
at Connection.<anonymous> (/home/wasd_xyz/Desktop/test/node_modules/mongodb-core/lib/connection/pool.js:329:12)
at Object.onceWrapper (events.js:317:30)
at emitTwo (events.js:126:13)
at Connection.emit (events.js:214:7)
at Socket.<anonymous> (/home/wasd_xyz/Desktop/test/node_modules/mongodb-core/lib/connection/connection.js:256:10)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at Socket.emit (events.js:208:7)
at Socket._onTimeout (net.js:420:8)
at ontimeout (timers.js:482:11)
at tryOnTimeout (timers.js:317:5)
at Timer.listOnTimeout (timers.js:277:5)
name: 'MongoNetworkError',
message: 'failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connection 0 to localhost:27017 timed out]' }
(node:5453) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connection 0 to localhost:27017 timed out]
at Pool.<anonymous> (/home/wasd_xyz/Desktop/test/node_modules/mongodb-core/lib/topologies/server.js:505:11)
at emitOne (events.js:116:13)
at Pool.emit (events.js:211:7)
at Connection.<anonymous> (/home/wasd_xyz/Desktop/test/node_modules/mongodb-core/lib/connection/pool.js:329:12)
at Object.onceWrapper (events.js:317:30)
at emitTwo (events.js:126:13)
at Connection.emit (events.js:214:7)
at Socket.<anonymous> (/home/wasd_xyz/Desktop/test/node_modules/mongodb-core/lib/connection/connection.js:256:10)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at Socket.emit (events.js:208:7)
at Socket._onTimeout (net.js:420:8)
at ontimeout (timers.js:482:11)
at tryOnTimeout (timers.js:317:5)
at Timer.listOnTimeout (timers.js:277:5)
(node:5453) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:5453) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
sudoãµãŒãã¹mongodbã¹ããŒã¿ã¹
â mongodb.service - MongoDB Database
Loaded: loaded (/etc/systemd/system/mongodb.service; enabled; vendor preset:
Active: active (running) since Sat 2018-06-23 17:13:28 IST; 13min ago
Docs: https://docs.mongodb.org/manual
Main PID: 4224 (mongod)
Tasks: 24 (limit: 4915)
CGroup: /system.slice/mongodb.service
ââ4224 /usr/bin/mongod --quiet --config /etc/mongod.conf
Jun 23 17:13:28 Inspiron5370 systemd[1]: Started MongoDB Database.
@pranshuchittora MongoDBæ§æãã¡ã€ã«ã衚瀺ã§ããŸããïŒ ããŒãã27017ã§ããããšã確èªããŠãã ããããŸããlocalhostã®ä»£ããã«127.0.0.1ã䜿çšããŠã¿ãŠãã ãã
åé¡ã解決ããããŒã«ã«ãã¹ãã§ã¯ãªãIPã§æ¥ç¶ããŠã¿ãŠãã ããã
let local = "mongodb://127.0.0.1:27017/XXX";
mongoose.connect(
local,
{ useNewUrlParser: true }
);
æåã®æ¥ç¶è©Šè¡ã倱æãããšãåžžã«ãšã©ãŒãã¹ããŒãããŸãã
以äžã䜿çšããŠããããã€ãã¹ã§ããŸãïŒããšãã°ãã¢ããª/ã¹ã¯ãªãããéå§ããåã«DBãå®è¡ãããŠããããšã確èªããå ŽåïŒã
ãã³ã°ãŒã¹@ 5.3.16
@ types / [email protected]
@ types / [email protected]
async function waitForMongoDBStart(uri: string, timeoutMs: number) {
return new Promise( async (resolve, reject) => {
let endTime = Date.now() + timeoutMs;
while (true) {
let connectionError: Error;
function errorHandler(err: Error) {
connectionError = err;
}
mongoose.connection.once("error", errorHandler);
await mongoose.connect(uri, {
connectTimeoutMS: 5000, // This timeout applies only after connected & connection lost
useNewUrlParser: true,
useFindAndModify: false
});
// Time for error event propagation
await wait(0);
if ( ! connectionError) {
mongoose.connection.removeListener("error", errorHandler);
return resolve(); // All OK, connected
}
if (connectionError.name !== "MongoNetworkError") {
return reject(`Unable to connect mongoDB. Details: ${connectionError}`);
}
if (Date.now() > endTime) {
return reject(`Unable to connect mongoBD in ${timeoutMs} ms. Details: ${connectionError}`);
}
}
});
}
@ vkarpov15ããã¯éåžžã«éèªæãªåäœã§ãã https://mongoosejs.com/docs/connections.htmlããïŒ
connectTimeoutMS - How long the MongoDB driver will wait
before failing its initial connection attempt.
Once Mongoose has successfully connected, connectTimeoutMS is no longer relevant.
ããã¥ã¡ã³ãã«ã¯ãåææ¥ç¶ã§åäœããã¯ãã§ãããšèšèŒãããŠããŸãããåäœããŸããã failed to connect to server
ãšã©ãŒãçºçãããšãããã«å€±æããŸãã
MongoDBãã©ã€ããŒéã§äžè²«ããåäœãããå Žåfalse
ãããã©ã«ãã§reconnectOnInitialFail
ãããªãªãã·ã§ã³ããããšäŸ¿å©ã§ãã
çŸåšã®åäœã¯ãvkarpov15ã§èª¬æãããŠããåäœãšã¯éã§ã-
connectImeoutMSã¯ãæåã®æ¥ç¶åŸã«ã®ã¿éèŠã«ãªããŸãïŒæåã®æ¥ç¶ã§ã¯
DBãéå§ãããæ¥ç¶ãåãå
¥ããããšãæåŸ
ãããŸãããã以å€ã®å Žåã¯å³æ
ãšã©ãŒãã¹ããŒãããŸãïŒ
ãããæ³£ãããååŸ01æ03 O 22 GRU 2018ããããªãŒKirilyuk [email protected]
napisaÅïŒaïŒïŒ
MongoDBãã©ã€ããŒéã§äžè²«ããåäœãããŠããå Žåã¯ã
reconnectOnInitialFailã®ãããªããã€ãã®ãªãã·ã§ã³ããããŸãã
ãã£ãã©ã«ãâ
ããªããã³ã¡ã³ãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/Automattic/mongoose/issues/5169#issuecomment-449565468 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/ABY-TjgeI2UqVca050y5YY3zi6w7nMkfks5u7h-vgaJpZM4M-1ur
ã
-
Wojciech Fiderek
æºåž¯é»è©±ïŒ+48516 661 428
æ£ããæãåºãã°ãconnectTimeoutMSã¯ããããã¯ãŒã¯ã®ç¶æ ãšOSã«å¿ããŠãåææ¥ç¶ã§éèŠã«ãªããŸãã æåã®æ¥ç¶åŸãconnectTimeoutMSã¯ãã€éèŠã«ãªããŸããïŒ
ç§ã¯ãWindows 10ãšã¢ã«ãã€ã³ã®LinuxïŒããŒãžã§ã³äžæïŒäžã®ããŒã«ã«ãã¹ãã®mongodã€ã³ã¹ã¿ã³ã¹ãžã®æåã®è©Šè¡ã§æ¥ç¶ããããšãã§ããŸããã§ãããšããç§ã®å Žåã¯å³åº§ã«ãšã©ãŒãã¹ããŒãããŸããã Mongodã€ã³ã¹ã¿ã³ã¹ã¯ãŸã éå§ãããŠããŸããã
ããŒã«ã«ãã¹ã以å€ã®äŸïŒ 誰ïŒ
@fider @Jokeroããã«æãäžããŸãããããã®éãã connectTimeoutMS
ã¯ãæåã®æ¥ç¶ã確ç«ããããŸã§ã®ã¿éèŠã§ããããã®åŸã¯socketTimeoutMS
ãåŒãç¶ããŸãã MongoDBãã©ã€ããŒã®é¢é£ã³ãŒãã¯æ¬¡ã®ãšããã§ãã
connectTimeoutMS
ã¯ãéåžžDNSãšã©ãŒãŸãã¯æ¥ç¶æåŠãšã©ãŒãçºçãããããåžžã«åœ¹ç«ã€ãšã¯éããŸããã ããããããšãã°ãããŒãããªãã¹ã³ããŠãããå®éã«ã¯äœãããªãTCPãµãŒããŒãéããšã次ã®ããã«ãªããŸãã
const net = require('net');
const server = net.createServer();
server.listen(27055);
connectTimeoutMS
ãéå§ãããããšãããããŸãã
const assert = require('assert');
const mongoose = require('mongoose');
mongoose.set('debug', true);
const { Schema } = mongoose;
run().then(() => console.log('done')).catch(error => console.error(error.stack));
async function run() {
await mongoose.connect('mongodb://localhost:27055', {
useNewUrlParser: true,
connectTimeoutMS: 1000,
socketTimeoutMS: 25000
});
}
$ time node gh-5169.js
MongoNetworkError: connection 0 to localhost:27055 timed out
at Socket.<anonymous> (/mongoose/node_modules/mongodb-core/lib/connection/connection.js:259:7)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at Socket.emit (events.js:208:7)
at Socket._onTimeout (net.js:407:8)
at ontimeout (timers.js:475:11)
at tryOnTimeout (timers.js:310:5)
at Timer.listOnTimeout (timers.js:270:5)
real 0m2.293s
user 0m0.271s
sys 0m0.043s
$
ãããã¯ãŒã¯ã®å¶éã«ãããMongoDBã®URLããããã¯ãããããšããããŸãããããã¯ãŒã¯/ã€ã³ã¿ãŒããããœãŒã¹ãå€æŽããŠã¿ãŠãã ããã
æåã®æ¥ç¶ãè¡ããšããïŒå°ãªããšãïŒæ¬¡ã®3ã€ã®ããšãèµ·ãããŸãã
mongodbããããæ¥ç¶ã¯æåããŸããã€ã§ãŒã€ïŒ
ãµãŒããŒã¯ãæ¥ç¶ãæåŠãããŸããããšå¿çããŸããããã¯ããã®ããŒãã§ãªãã¹ã³ããŠããããã»ã¹ããªãããæ¥ç¶ã_ã¢ã¯ãã£ãã«æåŠãã_ãã¡ã€ã¢ãŠã©ãŒã«ãããããšãæå³ããŸãã ïŒããã¯éåžžããã«èµ·ãããŸãããããŠç§ã¯ããããã¡ã€ããŒãçµéšããŠããããšã ãšæããŸããïŒ
ãµãŒããŒã¯ãŸã£ããå¿çããŸãããããšãã°ããã¡ã€ã¢ãŠã©ãŒã«ããã±ããã_ååçã«ãããããã_ãããã®IPã¢ãã¬ã¹ã«ãµãŒããŒããããŸããã ïŒãã®å Žåãvkarpovã®connectTimeoutMS
ãæçµçã«ããªã¬ãŒãããŸããïŒ
ãããã£ãŠãã¿ã€ã ã¢ãŠããåžžã«äœ¿çšããããšã¯éããŸããã ç¹å®ã®æéå ã«æ確ãªæåãŸãã¯å€±æããªãå Žåã«ã®ã¿äœ¿çšãããŸãã
ããã¯ãããã¯ãŒãã³ã°ã§äžè¬çã§ãããéååçãªäººãšè©±ããšãã«ãäžè¬çã§ãã ãªã¯ãšã¹ãã«ã¯ããNOïŒããšãã2çš®é¡ã®æåŠããããŸãã ãš .....
ãã£ãããšãã説æãããããšã@joeytwiddle ïŒ+1ïŒ
mongodb+srv
ã䜿çšããã¬ããªã«ã»ããæ¥ç¶ã§ãã®åäœãã©ã®ããã«åŠçããå¿
èŠããããŸããïŒ ã¬ããªã«ã»ãããããŒãªã³ã°ãªã¹ã¿ãŒãã·ããªãªïŒããŒã¿ããŒã¹ã®æŽæ°ïŒã«ãããšã connect ECONNREFUSED 34.238.xxx.xxx:27017
ãããªãšã©ãŒãçºçãå§ããŸãã
@esetnikã¯useUnifiedTopology: true
ãšMongoose 5.7.5ã䜿çšããŠããŸããïŒ é¢é£ããå¯èœæ§ã®ããåé¡ïŒ8209ãç¹å®ããŸããã
@ vkarpov15ã¯ããããã§ãïŒ ãã³ããããããšãã çµ±åããããžãç¡å¹ã«ããåŸã§ããã€ãã®ãã¹ããå®è¡ããçµæãå ±åããŸãã
ããã ç§ã®ãããžã§ã¯ãã§ããŸã£ããåãåé¡ããããŸãã ããªãã¯ããã®ããã«äœã解決çãèŠã€ããŸãããïŒïŒ
@fdmxfarhanå¥ã®åé¡ãéããŠãåé¡ãã³ãã¬ãŒãã«åŸã£ãŠãã ããã
æãåèã«ãªãã³ã¡ã³ã
æåã®æ¥ç¶ã倱æãããšãã«èªååæ¥ç¶ãå¿ èŠãªå Žåã¯ã次ã®ããã«åŠçããŸãã
ãã³ã°ãŒã¹<4.11ã®å Žåã
db.open()
代ããã«db.openUri()
ãã³ã°ãŒã¹4.11.7ã®å Žåããã®ææ³ã¯æ©èœããŸããã
ãã³ã°ãŒã¹4.13.4ã®å Žåãåã³æ©èœããŸãã
ç·šé2019/09/02ïŒããã«
promiseRetry
ã䜿çšããããçã解決çããã