У нас есть сервер AWS, на котором запущены некоторые службы nodeJS. Службы, подключающиеся к MS sql, случайным образом аварийно завершают работу с сообщением «Не удалось подключиться к серверу базы данных: 1433 — не удалось подключиться (последовательность)».
Мы работаем на:
Сервер приложений: Linux Ubuntu 14.4 AWS m5 NodeJS: 8.11.2 Службы используют последнюю версию пакета mssql (4.3.0). Это включает в себя утомительные 2.7.1.
Сервер БД: Windows Server 2012. SQL Server 2012
пропускная способность: около 300 об/мин, ошибка возникает и при более низкой пропускной способности (около 20 об/мин). Приложение работает в кластере через PM2 (запускается 4 раза). Мы видим, что ошибка возникает во всех 4 случаях одновременно, но иногда и в 1 или 2 экземплярах.
Что мы пробовали:
- Обновление до альфа-версии mssql с утомительной 3.0.1. Не имело значения
- Обновление с компьютера Amazon M4 до компьютера M5 с улучшенной сетью
- Изменение настроек пула в приложении. Мы попытались установить минимальное количество соединений на 0 или низкое/высокое значение. Max также на низкое / высокое значение, но безрезультатно.
- Дублировать сервер на новую машину.
- Установка idleTimeoutMillis на 1 секунду
- Пингуем сервер БД, чтобы узнать, есть ли проблема с подключением, но мы не видим странных пингов, когда возникает ошибка.
Подключение при запуске приложения:
App.sqlConnection = new App.SQL.ConnectionPool(config, function(err) {
if(err){
Log.error(err);
process.exit(1);
}
App.sqlConnection.on('error', err => {
Log.error(`There was a connection err : ${err}`);
process.exit(1);
});
});
запрос;
var request = new App.SQL.Request(App.sqlConnection);
request.query(sQuery, function(err,results)
{
});
Ошибки перехватываются обработчиком «при ошибке».
Ошибка возникает случайным образом в сервисах. У некоторых больше случаев ошибки, чем у других. У нас заканчиваются варианты. Любая идея, если мы можем увидеть более подробные ошибки?