Назад | Перейти на главную страницу

Тайм-аут подключения к SQL Server после загрузки на веб-сервер IIS

У нас есть MSSQL 2008 R2, работающий на Windows 2008 R2, он поражен двумя веб-серверами server 2008 R2, на которых запущен asp.net. Оба присоединены к домену Active Directory и используют встроенную аутентификацию для подключения к серверу sql. В пуле приложений IIS настроены имя пользователя и пароль. Это работало безупречно последний год или около того.

Недавно мы хотели запустить новые веб-серверы, и я настроил новую Windows 2012 R2 с тем же веб-сайтом и настроил пул приложений IIS с тем же именем пользователя и паролем. Сайт подключается и отлично работает, когда я провожу тестирование. Но как только я нагружаю сервер, я вижу, как IIS начинает зависать и запросы начинают накапливаться.

Я сделал дамп памяти, использовал новый анализ DebugDiag 2.0 и увидел, что запросы зависают при открытии sql-соединения:

Этот поток пытается открыть соединение с базой данных

Строка подключения: Источник данных = 10.81.73.66; Партнер по отработке отказа = 10.81.73.72; Начальный каталог = XXXX; Интегрированная безопасность = True; Максимальный размер пула = 6000; Время ожидания подключения = 30; Сетевая библиотека = dbmssocn; Имя приложения = EntityFrameworkMUE и таймаут подключения установлен на 30 секунд.

В рамках анализа я вижу довольно много исключений:

Истекло время ожидания подключения. Время ожидания истекло при попытке использовать подтверждение квитирования перед входом в систему. Это может быть связано с тем, что квитирование перед входом в систему не удалось или сервер не смог ответить вовремя. Этот сбой произошел при попытке подключиться к основному серверу. Время, затраченное на попытку подключения к этому серверу, было - инициализация [Pre-Login] = 3342; рукопожатие = 0;

Есть идеи, что попробовать?

В конечном итоге мы решили проблему в нашей среде, удалив интегрированную безопасность и указав идентификатор пользователя и пароль в строке подключения. Так и не нашел первопричины.

Павел,

Вполне возможно, что TCP / IP включен для IPv4-адреса SQL-сервера, но не для IPv6, и ваши новые серверы пытаются говорить по IPv6.

Попробуйте включить IPv6 на сервере SQL.

В диспетчере конфигурации SQL Server

  • Откройте узел "Сетевая конфигурация SQL Server".
  • Щелкните Протоколы для MYSQLINSTANCE.
  • Справа щелкните правой кнопкой мыши TCP / IP
  • Щелкните Свойства
  • Выберите вкладку IP-адреса.
  • Для каждого IP-адреса в списке убедитесь, что для Active и Enabled установлено значение Да.