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

Задержка между IIS и SQL на одной физической, двух виртуальных машинах

У меня есть один сервер (процессоры 2x4, оперативная память 32 ГБ), это хост Windows Server 2012 Hyper V, на котором размещены две гостевые виртуальные машины (также экземпляры Windows Server 2012). Один из них - это веб-сервер, другой - SQL-сервер.

При переходе на страницу, которая содержит более 50 записей, возникает заметная задержка. Я фиксирую / сообщаю время каждой итерации цикла, и каждая итерация занимает около 20-30 миллисекунд. Конечно, это составляет более секунды задержки для всего цикла.

Я подумал, что, возможно, нужно настроить SQL, но при запуске профилировщика запросы показывают почти нулевую длительность, поэтому кажется, что узкое место происходит между двумя виртуальными машинами.

У меня обе виртуальные машины настроены на использование фактического сетевого адаптера (вместо использования виртуального сетевого адаптера), так что, возможно, это часть моей проблемы.

Кроме того, это классический сайт ASP, поэтому он использует поставщика SQL OLE DB, и мне интересно, является ли это частью проблемы.

Это новая установка сервера из существующей установки сервера Windows 2003 / IIS6, где и веб, и база данных работают на одном экземпляре сервера (без виртуализации). В этой настройке нет такой задержки при наведении курсора, как это. Но существует так много переменных, что я не уверен, с чего начать.

Причина такого рода задержки в двух виртуальных машинах в одной сети заключается в том, что все еще применяется одна и та же сеть. Вы не хотите перебирать записи, поступающие на SQL Server для каждой записи, а вместо этого загружайте весь набор записей сразу на веб-сервер, а затем обрабатывайте все сразу.

В моем случае это была ложная тревога. Я думал, что задержка была уникальной для этой новой установки Hyper-V, но на самом деле она также происходила и на реальном сервере. Это произошло из-за изменения, которое было недавно внесено в наш код, и проблема еще не была обнаружена в реальном времени.