Сбой циклического соединения между функциями Azure и MongoDB - PullRequest
0 голосов
/ 21 мая 2019

Я развернул функцию в Azure, которая запускается таймером, каждые 5 минут он выполняет запрос GET к API и сохраняет результаты в MongoDB, размещенной на сервере.

Запуск функции на моем локальном хостедоступ к тому же серверу MongoDB работает нормально, но при запуске функции в Azure я получаю исключение точно каждые 10 минут (или 2 выполнения функции), как мы видим ниже:

enter image description here

Исключительная ситуация:

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

Я попытался изменить конфигурацию клиента MongoDB, но не сработал.Есть идеи, почему это происходит в Azure, а не в эмуляторе localhost?И что еще более важно, есть какое-то исправление или обходной путь?

Спасибо!

1 Ответ

0 голосов
/ 30 мая 2019

Соединение, которое вы открываете здесь, на самом деле представляет собой пул из 5 соединений (по умолчанию), так что вы можете просто подключиться и оставить его открытым. Я предполагаю, что вы периодически теряете связь с mongolab, и ваши соединения умирают, когда это происходит. Надеюсь, включение auto_reconnect разрешит это.

Вы можете написать запрос проверки связи, чтобы проверить, является ли соединение активным или нет, как показано ниже.

var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var server = client.GetServer();
server.Ping();

В качестве альтернативы при установлении соединения

client = new MongoClient("mongodb://localhost");
database = client.GetDatabase(mongoDbStr);
bool isMongoLive = database.RunCommandAsync((Command<BsonDocument>)"{ping:1}").Wait(1000);

if(isMongoLive)
{
    // connected
}
else
{
    // couldn't connect
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...