У меня есть сайт, который представляет собой белую метку (несколько версий одного и того же сайта), которую я недавно запустил. Пока еще не так много трафика - в основном боты, но, возможно, 800 пользователей в день. Он размещен на Azure с базой данных Azure в дополнение к админ-панели, расположенной на не-лазурном сервере. Оба узла подключаются к одной базе данных Azure. Есть также некоторые рабочие роли, выполняемые для обработки данных - 99% времени, когда они ничего не делают, но регулярно проверяют.
Я всегда испытывал случайные ошибки, которые длились несколько секунд, а затем снова ок, например:
При получении результатов с сервера произошла ошибка транспортного уровня. (поставщик: поставщик TCP, ошибка: 0 - существующее соединение было принудительно закрыто удаленным хостом.)
Сегодня утром у нас была более серьезная проблема. Это началось с:
System.ComponentModel.Win32Exception: существующее соединение было принудительно закрыто удаленным хостом
Это произошло, в то время как боты (Google, Baidu, AhrefsBot и Wiseguys.nl) индексировали сайт. У меня есть одна или несколько ошибок. Затем я получил:
System.Data.SqlClient.SqlException: служба столкнулась с ошибкой обработки вашего запроса. Пожалуйста, попробуйте еще раз. Код ошибки 40143. Сильная ошибка произошла в текущей команде. Результаты, если таковые имеются, должны быть отброшены.
Это было во время фазы ExecuteReader.
Через 10 минут возникла настоящая проблема - это означало, что никто не смог войти в интерфейс администратора, но веб-сайт Azure появился нормально, когда я его протестировал, хотя боты все еще вызывали ошибки. Проблема заключалась в следующем:
System.ComponentModel.Win32Exception: время ожидания ожидания
Это продолжалось со случайными подключениями, работающими в течение и около часа. Затем я столкнулся с другой проблемой:
System.Data.SqlClient.SqlException: Идентификатор ресурса: 1. Предел запроса для базы данных равен 180 и достигнут. См. 'http://go.microsoft.com/fwlink/?LinkId=267637' для помощи.
Это произошло в последний и последний раз - в основном для рабочих ролей. Затем я попытался выяснить, что принимал все эти запросы, и я нашел эту команду:
SELECT * FROM sys.dm_exec_requests
Он возвращал только 1 или 2 запроса, когда я запускал его снова и снова.
Итак, мои вопросы: 1) Кто-нибудь еще испытывает относительно регулярное (один раз, возможно, два раза в день) временное отключение от сервера, размещенного на Azure? 2) Указывает ли перечисленный выше перечень событий на конкретную проблему? Все это могло произойти, когда в систему вошло множество админов. 3) Как лучше отлаживать количество запросов к базе данных, когда я получаю сообщение с лимитом 180?
Спасибо заранее.