Я пытаюсь повторно использовать соединение mongodb для AWS Lambdas, это моя функция соединения:
const openMongodbConnection = ({ config }) => (
process.mongoConnection ? Promise.resolve() : mongoose.connect(config.MONGO_URL, {
bufferCommands: false,
bufferMaxEntries: 0,
keepAlive: true,
})
.then((connection) => {
process.mongoConnection = connection;
return Promise.resolve();
}, err => (
Promise.reject({
statusCode: 500,
errorCode: [{
code: 'DatabaseError',
description: `unable to connect to mongo db: ${err} ${JSON.stringify(config)}`,
}],
})
))
);
База данных находится в AWS VPC и не имеет внешнего доступа.Холодный запуск работает отлично, но иногда я получаю ошибку тайм-аута, как это:
2018-10-03T18:36:06.984Z 7ab97df7-c739-11e8-89bf-87260b172585 MongoNetworkError: connection 2 to some.ip.from.server:27017 timed out
at Socket.<anonymous> (/var/task/node_modules/mongodb-core/lib/connection/connection.js:258:7)
at Socket.g (events.js:292:16)
at emitNone (events.js:86:13)
at Socket.emit (events.js:185:7)
at Socket._onTimeout (net.js:338:8)
at ontimeout (timers.js:386:14)
at tryOnTimeout (timers.js:250:5)
at Timer.listOnTimeout (timers.js:214:5)
У меня также есть context.callbackWaitsForEmptyEventLoop = false;
прямо в начале функции.
Эта ошибка совершенно случайна,иногда работает, а иногда нет, я думаю об открытии и закрытии соединения каждый раз, когда приходит новый запрос, но я знаю, что это снизит производительность lambdas, а также увеличит операции ввода-вывода с сервера mongodb.
Помощь будет принята с благодарностью.