У меня установлен API в Node.JS с использованием Mongoose для подключения к MongoDB в Azure. При небольшом объеме вызовов API работает без ошибок и успешно сохраняет все данные.
Однако, как только я увеличиваю трафик, я начинаю получать ошибки соединения TimeOut.
Я использую insertMany, поскольку каждая полезная нагрузка может иметь более одной записи, но полезная нагрузка не особенно велика. Я также увеличил пропускную способность Azure для коллекции, чтобы убедиться, что она может обрабатывать размер полезной нагрузки (до этого я делал ошибки из-за размера запроса).
Я пытался циклически перебирать данные для добавления в каждую запись один за другим вместо insertMany, но результаты его сохранения были непоследовательными (т. Е. Он не всегда сохранял бы все 3 в каждой полезной нагрузке), однако это не помогло кажется, чтобы избежать проблемы тайм-аута.
Это код для подключения MongoDB:
mongoose
.connect(db_url, {
useNewUrlParser: true
}).then(() => {
return next();
})
.catch(err => {
res.status(500).send({
status: 500,
message: "Internal server error"
});
mongoose.connection.close();
});
This is the code that is saving the data:
MODEL.insertMany(jsonData, function(err, results) {
if (err) {
console.error(err);
res.status(500).send({
status: 500,
message: "Internal server error"
});
} else {
res.status(200).send({
status: 200,
message: "Record(s) saved"
});
}
});
Вот ошибка, которую я получаю:
{ Error: connect ETIMEDOUT
at Object._errnoException (util.js:992:11)
at _exceptionWithHostPort (util.js:1014:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1186:14)
code: 'ETIMEDOUT',
errno: 'ETIMEDOUT',
syscall: 'connect',
address: '',
port: }