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). ๋ด๊ฐ ๋ชจ๋ฅด๋ ๊ฒ์ ๋ชฝ๊ตฌ์ค/๋ชฝ๊ณ ๊ฐ ๋ฌด์์๋ก ์ฐ๊ฒฐ์ด ๋์ด์ง๋ ์ด์ ์
๋๋ค. ์ด์ ์๋ ์ด๋ฌํ ๋์์ด ์์์ต๋๋ค.
์ด๋ค mongo ํธ์คํ
์ ์คํํ๊ณ ์์ต๋๊น? ์ ๋ฉ?
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
์ด๋ฒคํธ์ ๋ํ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์์ต๋๋ค. ์ฌ์ค, ํ๋ก์ธ์ค๋ ์ฌ์ ํ ์คํ ์ค์ด๊ณ mongoose๋ ๋ค๋ฅธ ์ด๋ฒคํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ง ์์์ต๋๋ค.
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 ๋ฌด๊ฑฐ์ด ์ ์ฅ/์
๋ฐ์ดํธ๊ฐ ์์ธ์ด ๋๋ ์ ์ฌํ ๊ฒฝํ์ด ์์ต๋๊น?
์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ์ ์ง๋ฉดํด ์์ต๋๋ค. ์๋น์ค ์ค ํ๋์์ ์ค๋ฅ ์ด๋ฒคํธ(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
๋ฑ). ๋ฐ๋ผ์ ์ด ์น ์๋ฒ๋ ๊ณ์ ์คํ๋๊ณ 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
์ด๋ฒคํธ์์๋ ์น ์๋ฒ๋ฅผ ๊ฐ์ ๋ก ๋ค์ ์์ํ๊ณ ์ mongodb ์ฐ๊ฒฐ์ ์ค์ ํ๋๋ก process.exit(0)
์
๋๋ค. ์ด๋ค ์์ด๋์ด?
์, ์ด์ ์ mlab์์ ์ด๋ฐ ์ข ๋ฅ์ ์ผ์ด ๋ฐ์ํ๋ค๊ณ ๋ค์์ต๋๋ค. ์ด ๊ฒฝ์ฐ TBH๋ ์๋ฒ๋ฅผ ์ถฉ๋์ํค๊ณ ๋ค์ ์์ํฉ๋๋ค. ์ ๋ง ๋๋ฆฐ ์คํ ๋คํธ์ํน์ mongodb ๋๋ผ์ด๋ฒ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๊ฒฝํฅ์ด ์์ผ๋ฉฐ ๋๋ฒ๊น ์๋ mlab๊ณผ์ ์กฐ์ ์ด ํฌํจ๋ ๊ฒ์ด๋ผ๊ณ ์์ํฉ๋๋ค.
์ง๊ธ ๋ฌด์์ด ์๋ชป๋์๋์ง(mongoose, mongo ๋๋ผ์ด๋ฒ, mlab ๋๋ heroku) ํ์คํ์ง ์์ง๋ง ์ง๋ ๋ฉฐ์น ๋์ ๋ฌด๊ฑฐ์ด mongoose ์ฟผ๋ฆฌ(์๋ตํ๋ ๋ฐ 30์ด ์ด์ ์์)๋ฅผ ์คํํ๋ ์น ์์ฒญ์ ์คํํ๋ฉด heroku ์์ฒญ์ด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. timeout(์ด๊ฒ์ 30์ด ์ด์ ๊ฑธ๋ฆฌ๋ ๋ชจ๋ ์น ์์ฒญ์ ์๊ฐ ์ด๊ณผํ๋ heroku์ ๋ฉ์ปค๋์ฆ์
๋๋ค). ํด๋น ์น ์์ฒญ์ด ์๊ฐ ์ด๊ณผ๋๋ฉด ํด๋น ์๋ฒ์์ ๋ชฝ๊ตฌ์ค ์ฟผ๋ฆฌ๊ฐ ํ์ํ ๋ค์ ์น ์์ฒญ๋ ์๊ฐ ์ด๊ณผ๋ฉ๋๋ค. ์ง์ง ๋ฌธ์ ๋ 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
๋ฌธ์ ๋ฅผ (๋ฌด๊ฑฐ์ด ์ฟผ๋ฆฌ๊ฐ ์คํ๋๋ ๋์ ๋น ๋ฅธ ์ฟผ๋ฆฌ๊ฐ ์ฌ์ ํ ์คํ์ง๊ณ ) ์์ ๋ ํ๊ณ ๋ค์๊ณ [email protected]
๋ก ์
๊ทธ๋ ์ด๋ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์๊ณ ๋ฒ๊ทธ๊ฐ ์๋ ์ปค๋ฐ์ https://github.com/mongodb/node-mongodb-native/pull/1418์
๋๋ค.
์คํ๋ฅผ ์์ ํ ๊ฒ ๊ฐ์ง๋ง ํด๋น eventName(์คํ ํฌํจ)์ด ์ผ๋ถ deps์์ ์ฌ์ฉ ์ค์
๋๋ค.
@loris ์๋ชป๋ ์ด๋ฒคํธ ์ด๋ฆ์ ๊ฐ์ง ๋๋จธ์ง ์ฐธ์กฐ๊ฐ ์ด๋์ ์๋์ง ์์ญ๋๊น? ๋๋ ๊ทธ๊ฒ์ ๊ณ ์น PR์ ๋ง๋ค ์ ์์ง๋ง ๋๋ ์๋ฌด๊ฒ๋ ์ฐพ์ ์ ์์ต๋๋ค.
@jakesjews ๋ ์ฐธ์กฐ๋ฅผ ์ฐพ์ ์ ์์ผ๋ฏ๋ก ๋ด ์ปดํจํฐ์์ ์ผ์นํ์ง ์๋ ๋ฒ์ ์ ํ์ธํ์ ์ ์์ผ๋ฏ๋ก ์์ธ์ ๋ํด ํ๋ฆด ์ ์์ต๋๋ค. ๋ค์ ์ฐ๋ฝ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ ์ฌํ ๋ฌธ์ ๊ฐ ์์: ์ฐ๊ฒฐ ํด์ ํ ์ฌ์ฐ๊ฒฐ ์คํจ. ์ด๊ฒ์ ๋ชฝ๊ตฌ์ค 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
์์ ์ด์ ์ปค๋ฐ์ ํ์ธํ๋ฉด ๋ฌธ์ ๋ ํด๊ฒฐ๋ฉ๋๋ค(์ฅ๊ธฐ ์คํ ๊ฒฝ๋ก๊ฐ ์ฒ๋ฆฌ๋๋ ๋์ ๋น ๋ฅด๊ฒ ์คํ๋๋ ๊ณ ์ ๊ฒฝ๋ก๊ฐ ๋ช ms ํ์ ๋ฐํ๋จ)(๊ธฐ๋ณธ ํ ํฌ๊ธฐ ์ฌ์ฉ)์์ ๋ง์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์์๋ ๋ชฝ๊ณ ์ฝ์ด์ ๋์ฐฉํ๋ค.
@loris ๋ค, ํ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ฉด ๋์์ด ๋ ๊ฒ์
๋๋ค. mongodb ์๋ฒ๊ฐ ๋์์ poolSize
์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ๋๋ฆฐ ์ด์ฐจ ๋ฌธ์ ์ ์ง๋ฉดํ ๊ฒ ๊ฐ์ต๋๋ค. ํ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ฉด ๋์์ด ๋ฉ๋๋ค. ๋๋ฌด ๋ง์ด ๋๋ฆฌ์ง ๋ง์ธ์. ๊ทธ๋ ์ง ์์ผ๋ฉด WiredTiger์์ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ํ๋๊ธฐ ์์ํ ๊ฒ์
๋๋ค.
์๋
ํ์ธ์,
์ด๊ฒ์ ๋ํ ์ด๋ค ์
๋ฐ์ดํธ? ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์ฌ์ฉํ ๋ auto_reconnect๊ฐ ์๋ํ์ง ์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ํ์๋ฉ๋๋ค. ๋ฐฉ๊ธ mongodb 2.2.11๊ณผ ํจ๊ป mongoose 4.7.0์ ์๋ํ์ง๋ง ์ฌ์ ํ ๋ค์ ์ฐ๊ฒฐํ์ง ์์ต๋๋ค. ๋๋ mongod ๋ฒ์ 3.2.10์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ํ ๋ฆฌ๊ฐ ์๋ ๋ค๋ฅธ ํฌํธ์์ ์คํ๋๋ 3๊ฐ์ mongod ์ธ์คํด์ค๊ฐ ์๋ ๋จ์ผ ํธ์คํธ(๋ ธํธ๋ถ)์์ ๋ชจ๋ ๊ฒ์ ์คํํ๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋ฌธ์ ๊ฐ ๋์ด์ผ ํ๋ ๊ฒ ๊ฐ์ง๋ ์์ง๋ง, ์ ๋ mongo/mongoose/node/javascript์ ์ต์ํ์ง ์์ต๋๋ค. mongoose๊ฐ ์๋ ๋ด ๋ ธ๋ ์ฑ๋ ๋์ผํ ํธ์คํธ์์ ์คํ ์ค์ ๋๋ค.
mongod ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ์ข
๋ฃํ๊ธฐ๋ง ํ๋ฉด ์ด๋ฅผ ์ฌํํ ์ ์์ต๋๋ค.
(launchctl stop mongod01; launchctl stop mongod02; launchctl stop mongod03)
์ฐ๊ฒฐ ๋ซํ ๋ฉ์์ง๋ฅผ ๊ธฐ๋ค๋ฆฐ ๋ค์ ๋ค์ ์์ํฉ๋๋ค(launchctl ๋ช
๋ น์์ "์ค์ง"๋ฅผ "์์"์ผ๋ก ๋์ฒด). ๋ด ์ฑ์ด mongo์ ๋ค์ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค.
๋ณต์ ๋ณธ ์ธํธ๋ก ๊ตฌ์ฑ๋์ง ์์ ๋จ์ผ mongod ์ธ์คํด์ค๋ก ๋์ผํ ํ ์คํธ๋ฅผ ์ํํ๋ฉด mongoose๊ฐ ๋ค์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋์์ด ๋๋ ๊ฒฝ์ฐ ๋ก๊ทธ๋ฅผ ์ ๊ณตํ๊ฑฐ๋ ํจ์น๋ฅผ ์๋ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
ํํค์น ํ์ ๋ฌธ์ ์ ํ ๊ฐ์ง ์์ธ์ ์ฐพ์์ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. 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 ์์ฑ์ด ์ค์ ๋์ด ์์ง ์์ผ๋ฏ๋ก ํ ๋ ธ๋์ ๋ซ๊ธฐ ์ด๋ฒคํธ๊ฐ ์์ต๋๋ค. ๋ฒํผ๊ฐ ์๊ตฌ์ ์ผ๋ก ํ์ฑํ๋๋๋ก ํฉ๋๋ค. https://github.com/eflexsystems/mongoose/commit/5ac12727f34b41791f94643b66c8cc88aff4d66a ์ปค๋ฐ์ ์ฝ๊ฐ์ ํ์ด์ด ์์์ง๋ง pull ์์ฒญ์ ํ๊ธฐ ์ ์ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ๊ธฐ ์ํด ์๊ฐ์ ๋ ์ฃผ๊ณ ์ถ์ต๋๋ค.
@joeldodson ๊ทํ๋ ๋ด๊ฐ ๊ฒฝํํ ๊ฒ๊ณผ ๋์ผํ ๋ฌธ์ ๋ฅผ ์ค๋ช ํ๊ณ ์์ต๋๋ค. ํค๋์ ๋ฆด๋ฆฌ์ค >= 4.6.0์ ๋ฌธ์ ๊ฐ ํฌํจ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋์ 4.5.10์ ์๋ํ์ง๋ง replset์ ๋ค์ ์ฐ๊ฒฐ๋๊ณ ๋จ์ผ ์ฐ๊ฒฐ์ด ์๋์์ต๋๋ค.
@jakesjews ๋ฐ @kog13 ๊ฐ์ฌํฉ๋๋ค.
4.5.10์ ์๋ํ๋๋ฐ ๋ ํ๋ฆฌ์นด ์ธํธ๋ฅผ ๋ค์ ์์ํ ํ ๋ชฝ๊ตฌ์ค๊ฐ ๋ค์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ์ค์ง๋ ํ db.readyState๊ฐ ์ง์์ง์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์ฒญ์ ๊ฑฐ๋ถํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ํ์ธ ์ค์ ๋๋ค(์ฑ์ด DB์ ๋ค์ ์ฐ๊ฒฐ๋ ๋๊น์ง ๋๊ธฐํ์ง ์๋๋ก). ๋ํ 4.5.10์์ ์ฐ๊ฒฐ ํด์ ๋๋ ์ฐ๊ฒฐ ์ข ๋ฃ ์๋ฆผ์ ๋ฐ์ง ๋ชปํ์ต๋๋ค.
์ฑ์ด ์์๋ ๋ DB๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐ์ ์๋ํ๊ธฐ ์ํด 5์ด ํ์ด๋จธ๊ฐ ์๋ ๋ฃจํ์ ์๋ ๋ ผ๋ฆฌ๊ฐ ์ด๋ฏธ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ db.on('closed', function(){...}) ํธ๋ค๋ฌ์์ ๊ทธ๊ฒ์ ํธ์ถํ๋ ค๊ณ ์๋ํ๊ณ ์ ๋๋ก ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด ๊ด์ฌ์ฌ๋ ๋ช ์์ ์ผ๋ก ์ฐ๊ฒฐ์ ์๋ํ๋ฉด ๋ด๋ถ์ ์ฌ์ฐ๊ฒฐ ๋ ผ๋ฆฌ์ ์ถฉ๋์ด ๋ฐ์ํ๋์ง ์ฌ๋ถ์ ๋๋ค. ๋ ํ๋ฆฌ์นด ์ธํธ์์๋ ์ฌ์ ์์ด ์ ๋๋ ๊ฒ ๊ฐ์์ ๊ด์ฐฎ์ ๊ฒ ๊ฐ์์. ๋ํ ์๋ฒ์ replset ๋ชจ๋์ ๋ํ ์ฐ๊ฒฐ ์ต์ ์์ auto_reconnect๋ฅผ false๋ก ์ค์ ํฉ๋๋ค.
@jakesjews - ์์์ ์ธ๊ธํ ํจ์น๋ฅผ ์๋ํ์ง๋ง ์ฌ์ ํ ๋ค์ ์ฐ๊ฒฐ๋์ง ์์์ต๋๋ค. ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์ณค์ ์๋ ์์ง๋ง ํด๋น ํจ์น๋ ๋ซ๊ธฐ ์ด๋ฒคํธ๊ฐ ์์ฑ๋๊ณ readyState๊ฐ ์ ๋ฐ์ดํธ๋๋๋ก ํ๋ ๋ฐ ๋ ๋ง์ ๊ฒ ๊ฐ์ต๋๋ค.
auto_reconnect์ ๋ํ ํจ์น๊ฐ ์๋ค๋ฉด ๋ ์๋ํด ๋ณผ ์ ์์ด ๊ธฐ์ฉ๋๋ค. ์ ๋ ๊ณ์ ํํค์ณ๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ฌ ํด์.
์์ ํจ์น ์ธ์๋ @joeldodson ์ ๋ณต์ ๋ณธ ์ธํธ ๋ชจ๋ํฐ ์ฐ๊ฒฐ์ด mongo -core์ ์ต์ ๋ฆด๋ฆฌ์ค์ ์์กดํด์ผ ํฉ๋๋ค. ๋ด ํฌํฌ๋ฅผ ์ํํด ๋ณด๋ฉด ์ด๋ฏธ ๊ฐ์ง๊ณ ์์ด์ผํฉ๋๋ค.
๋๋ ์ง๊ธ ๋ชฝ๊ตฌ์ค๋ก ์๊ฐ ์ด๊ณผ ๋ฐ ์ฅ์ ์กฐ์น์ ๊ด๋ จํ์ฌ ๊ฝค ์ข์ ์์น์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค๋ฅธ ์ฌ๋์ด ๊ทธ๊ฒ์ ์๋ํ๊ณ ์ถ๋ค๋ฉด socketOptions์์ socketTimeout์ 0์ผ๋ก ์ค์ ํ๋ ๊ฒ ์ธ์๋ ๋ชฝ๊ตฌ์ค ํฌํฌ ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒ์ ๋๋ค.
socketTimeout์ 0์ผ๋ก ์ค์ ํ๋ ์ด์ ๋ ์ฌ์ ํ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํด์ผ ํ๋ mongo-core์ ๋ฒ๊ทธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ๋ฌธ์ ๋ ๋์ ์ผ๋ก ์ถ์/ํ์ฅ ์ฐ๊ฒฐ ํ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ํ์ด ์๋ํ๋ ๋ฐฉ์์ ์ ์ฐ๊ฒฐ์ ์ถ๊ฐํ ๋๋ง๋ค 30์ด ๋์ ํ๋์ด ์์ผ๋ฉด ์ฐ๊ฒฐ์ด ๋ซํ๋ ๊ฒ์ ๋๋ค. ์๊ฐ ์ด๊ณผ ์ด๋ฒคํธ๋ ํ์์ ์ ๊ฑฐ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๊ณ ์ฐ๊ฒฐ ์๋ ์ ํ์ธ 30ํ์ ์๊ฐ ์ด๊ณผ ํ์๋ฅผ ๋น๊ตํ๋ ๊ฒ์ฌ๋ ์คํํฉ๋๋ค. 2์ด๋ง๋ค ์คํ๋๊ณ ์๊ฐ ์ด๊ณผ ํ์๋ฅผ ์ง์ฐ๋ ํํธ๋นํธ๊ฐ ์์ง๋ง 30๊ฐ ์ด์์ ์์ฒญ์ด ๋ณ๋ ฌ๋ก ๋๊ธฐ์ด์ ์์ผ๋ฉด ๋ชจ๋ ์์ฒญ์ด ํํธ๋นํธ ์ฌ์ด์ ์๊ฐ ์ด๊ณผ๋๊ณ ์ฐ๊ฒฐ ํ์ด ํ๊ดด๋ฉ๋๋ค. ํ์ฌ ์ฐ๊ฒฐ์ ๋ํ ์๊ฐ ์ด๊ณผ๋ฅผ 0์ผ๋ก ์ค์ ํ๋ฉด ์ฐ๊ฒฐ์ด ๋นํ์ฑ ์ํ์ธ ๊ฒฝ์ฐ ์ฐ๊ฒฐ์ด ํ์์ ๋ค์ ์ ๋ฆฌ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค. ๋ฌธ์ ๋ฅผ ๋ณต์ ํ๋ ค๋ฉด ์ฐ๊ฒฐ ํ ํฌ๊ธฐ๋ฅผ ์ฝ 50์ผ๋ก ์ค์ ํ๊ณ 50๊ฐ์ ๋ณ๋ ฌ ์ฟผ๋ฆฌ๋ฅผ ์คํํด ๋ณด์ญ์์ค. ๊ทธ ํ ํ์ ์ฝ 30์ด ํ์ ํ๊ดด๋ฉ๋๋ค. ์๊ฐ ์ด๊ณผ๋ ์์ฒด ์๊ฐ ์ด๊ณผ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ณต์ ์ธํธ๋ฅผ ํ์ธํ๋ ํํธ๋นํธ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
์ต๊ทผ์ ์ผ์ด ๋ฐ๋น ์ ์ด ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ํจ๊ป ์์งํ ๊ธฐํ๊ฐ ์์์ง๋ง ๊ณง ์ป์ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@jakesjews์๊ฒ ๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋๋ ๋น์ ์ mongoose์ mongodb-core repos๋ฅผ ๊ฐ์ ธ์์ต๋๋ค. ์ฌ์ฐ๊ฒฐ์ด ์๋ํ์ต๋๋ค. Mongo์ ๋จ์ผ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ๋ ์ป๋ 'connected' ๋ฐ 'reconnected' ์ด๋ฒคํธ๋ฅผ ์ป์ง๋ ๋ชปํ์ต๋๋ค. ๋ํ readyState๊ฐ ์ฌ์ค์ ๋์ง ์๋ ๊ฒ ๊ฐ์ผ๋ฉฐ ๋ค์ ์ฐ๊ฒฐํ ํ์๋ ์ฌ์ ํ 0์ ๋๋ค.
๋ก๊ทธ๋ฅผ ํ ์คํธํ๊ฑฐ๋ ์์งํ๋ ๋ฐ ๋์์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
[email protected]
์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด ๋ฌธ์ ์ ๋ํด ์๋ก์ด ๊ฒ์ด ์์ต๋๊น?
์ฌ๊ธฐ์๋ ๋ฌธ์ ๋ฅผ ๊ฒฝํํฉ๋๋ค. ์ฐ๊ฒฐ ๋ฌธ์ ๋ก ์ธํด ๋ชฝ๊ตฌ์ค ๋ฒ์ ์ ๊ทธ๋ ์ด๋๋ฅผ ๋๋๋ ค์ผ ํ์ต๋๋ค. ๋ช ์ด๊ฐ ๊ฑธ๋ฆฌ๋ ์ฟผ๋ฆฌ๋ ํ์ฌ ์ฐ๊ฒฐ ์๊ฐ์ ์ด๊ณผํฉ๋๋ค. ์ด์ ์๋ ๊ทธ๋ ์ง ์์์ต๋๋ค.
์ด ๋ฌธ์ ๋ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ง๋ ์๊ฐ์ด ์์ ๋ @jakesjews ์๋ฃจ์
์ ์ฌ์ฉํด ๋ณผ ๊ฒ์
๋๋ค. ๊ทธ๋๊น์ง 4.4.X ์ฌ์ฉ
๋ฌธ์ ๊ฐ mongo-core์ ๋ฒ๊ทธ์ธ ๊ฒฝ์ฐ ์ด๊ฒ์ ์ค์ ๋ก mongoose์ ๋ฌธ์ ๊ฐ ์๋๋๋ค. ์ต์ ๋ฒ์ ์ mongoose์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ mongodb-core
์ ์ฅ์์ ๋ฌธ์ ๋ฅผ ์ ์ถํ ์ ์์ต๋๊น?
์ค์ ๋ก mongodb-core
๋ฒ์ ์ ๋ฐ๋ผ ์
๋ฐ์ดํธ๋์ด ๋ฌธ์ ๊ฐ ์๋ mongoose
๋ฌธ์ ์
๋๋ค. mongoose
๋ mongodb-core
์ ์ด์ ๋ฒ์ ์ผ๋ก ๋ณต์๋์ด์ผ ํฉ๋๋ค.
@jakesjews [email protected] ๊ฐ [email protected]์ ์ข ์๋์ด ์์ ์ ํ์ธํ๊ณ ํฌํฌ ์์ ์์ ์ฌํญ์ ์ ์ฉํ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ๋๋ค. ๊ฒ๋ณด๊ธฐ์๋ ๋ถ์์ฉ์ด ์์ต๋๊น?
๊ทธ๋ฆฌ๊ณ ํฌํฌ๋ฅผ ๋ณด๋ฉด ์ด ์ปค๋ฐ ์ด ์ด์ 4.7.x ๋ฐ/๋๋ 4.8.x PR์ ํ์ํ ์ ์ผํ ๋ณ๊ฒฝ ์ฌํญ์ ๋๊น?
@Koslun ํฌํฌ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค. ์์ ์ฌํญ์ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค socketOptions์ ๋ํด socketTimeout์ 0์ผ๋ก ์ค์ ํ๋ ๊ฒ์ ๋๋ค.
์ด์ ๋ด ์์ผ ์ต์ ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง ๋ณด์ฌ์ค๋๋ค.
var opts = {
server: {
socketOptions: {
keepAlive: 1,
socketTimeout: 0
}
},
replSet: {
socketOptions: {
keepAlive: 1,
socketTimeout: 0
}
}
@jakesjews ๋ค , ๋น ๋ฅธ ์ค๋ช ๊ฐ์ฌํฉ๋๋ค :).
์ด๋ค ๋ฒ์ ์ mongodb-core์์ ์ด ๋ฒ๊ทธ์ ๋ํ ์์ ์ฌํญ์ ๋ณผ ์ ์๋์ง ์์ญ๋๊น? ๋๋ ์ถ์ ํ ์ ์๋ ๋ฌธ์ , PR ๋๋ ์ปค๋ฐ์ด ์์ต๋๊น?
@Koslun ๋๊ธ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์ด ๋ฌธ์ ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์ด ๋ฌธ์ ๋ 2016๋ ๋ถํฐ ๊ณ์ ์ด๋ ค ์์ต๋๋ค.
์ด ๋ฌธ์ ๊ฐ 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 ํฌํฌ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค. ์์ ์ฌํญ์ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค socketOptions์ ๋ํด socketTimeout์ 0์ผ๋ก ์ค์ ํ๋ ๊ฒ์ ๋๋ค.
์ด์ ๋ด ์์ผ ์ต์ ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง ๋ณด์ฌ์ค๋๋ค.