У нас есть высоконагруженный sql-сервер, который не доступен извне. Веб-сервер обращается к серверу sql по локальной сети. По большей части он отлично работает, но время от времени, когда сервер sql имеет несколько неудачных попыток входа в систему, обычно из-за нагрузки, если сервер был перезапущен, или просто из-за экстремально высокой нагрузки, сервер sql начинает блокировать IP-адрес веб-сервера. Мы знаем, что это причина, потому что у нас есть второй LAN IP специально для этого сценария. Переключаем ip и все нормально. Веб-сервер - это iis. Когда мы просто перезапускаем IIS, это не исправляет.
Это ставит нас в тупик, потому что серверу нужна информация из sql. По мере истечения срока действия все большего и большего количества объектов кеша сервер бомбардирует sql, пока не получит то, что хочет.
Мы обнаружили, что там были неудачные проверки на предмет неправильного пароля, но, очевидно, пароль правильный. Я предполагаю, что что-то на сервере sql использует аудит для блокировки веб-сервера, но я не знаю что. Я искал установленные программы безрезультатно.
Я видел низкую производительность на веб-сайтах ASP .NET вместе с тупиками и проблемами подключения на стороне SQL Server при использовании .NET Framework 4.5+. Это ошибка, которая приводит к несоответствию с SessionState, который реализует KeepSessionAliveHttpHandler через интерфейс IRequiresSessionState.
Ошибка была исправлена в .NET Framework 4.5.1, но снова появилась в 4.7+. Сообщество рекомендует установить для uploadReadAheadSize значение unlimited. Эта настройка может увеличить потребление оперативной памяти IIS.
Пожалуйста, примите во внимание рециркулировать минимум 2 раза в день пул приложений.