
У меня довольно простая конфигурация: Windows Server 2012 Hyper V Host, с двумя виртуальными машинами (обе Server 2012), одна для IIS, одна для SQL Server. Они все подключаются через физический сетевой адаптер
Вчера вечером я попытался добавить виртуальный коммутатор и настроить виртуальные сетевые карты на двух виртуальных машинах (в дополнение к физической сетевой карте).
Я еще не переключил серверы на фактическое использование виртуальных сетевых карт, но по какой-то причине это уничтожило скорость соединения между двумя виртуальными машинами — даже несмотря на то, что виртуальные сетевые карты не использовались. Мы говорим о 200-500 миллисекундах до 30-90 секунд на запрос!
Поэтому сегодня утром, увидев, какое ужасное влияние это оказало на мой сайт, я отключил две виртуальные сетевые карты, поскольку это все, что я изменил, и, конечно же, скорость восстановилась.
В конечном итоге мне нужно перевести их на использование v-NIC, но сначала мне нужно решить эту проблему.
Что может быть причиной этого? И что я могу сделать, чтобы устранить неполадки?
Дополнительные детали:
Настройка на самом деле очень проста (возможно, это часть моей проблемы, я могу слишком упрощать то, что необходимо для этой настройки).
У меня есть один сервер с одним (физическим) NIC. В настоящее время этот NIC используется для связи между v-host и интернетом, а также между двумя VM и интернетом. Он также используется для внутренней связи между двумя VM.
Однако я пытаюсь переключить внутреннюю связь на виртуальный коммутатор посредством vNIC, освободив физическую сетевую карту для использования только для внешней связи.
Поэтому я добавил внутренний виртуальный коммутатор к v-host, а затем добавил виртуальную сетевую карту к каждой виртуальной машине.
После этого скорость моего соединения — через физический сетевой адаптер — резко упала. Отключение vNIC (через сетевую конфигурацию виртуальных машин) восстановило скорость до нормы.
Ниже приведены экраны конфигурации виртуальной машины для внешнего физического сетевого адаптера и внутренних виртуальных сетевых адаптеров (только на одной виртуальной машине, поскольку они оба настроены одинаково).
Еще один раунд подробностей
Если копнуть поглубже в эту проблему, то окажется, что сетевые карты Broadcom печально известны проблемами с производительностью. На этом сервере установлены две сетевые карты Broadcom BCM5716C. Вот несколько ссылок на обсуждение известных проблем:
Медленный сетевой доступ в виртуальных машинах — Broadcom и Hyper-V
Виртуальная машина Hyper-V Очень медленная сеть – VMQ – Broadcom
Поэтому я начал играть с настройками, отключая разные настройки по одной за раз. Ни одно из изменений, похоже, не повлияло на проблему — если я включаю гостевой vNIC, скорость загрузки падает до 25+ секунд. Отключаю его снова, и она возвращается к 250 мс —фактор 100!
Я также попробовал установить последние драйверы от Broadcom, никакой разницы.
На данный момент я считаю, что это проблема совместимости между сетевыми картами Broadcom и Hyper-V. Но я не хочу заказывать новые сетевые карты и тратить время на закрытие сайта, их установку и настройку, а проблема останется.
Поэтому было бы неплохо, если бы я мог окончательно решить, подходит ли NIC или нет.
Физическая конфигурация сетевого адаптера на коммутаторе-менеджере
Конфигурация виртуального коммутатора на менеджере коммутаторов
Физическая конфигурация сетевого адаптера на виртуальной машине базы данных
Конфигурация виртуальной сетевой карты на виртуальной машине базы данных
решение1
У меня очень похожая ситуация. Я нашел ответ здесь (Крайне медленная передача файлов на виртуальную машину Hyper-V на локальном компьютере)
С чипсетом Broadcom я отключил виртуальные очереди, и вся задержка исчезла. Сделайте это изменение на физическом NIC, а не на виртуальном NIC.
решение2
AFAIK, в Hyper-V нет такой вещи, как физический сетевой адаптер. Вы создали vSwitch с именем "Physical NIC", который сопоставлен с физическим адаптером и включили использование ОС управления. На каждой виртуальной машине есть vNic, использующий этот коммутатор. Зачем вам переключаться с одного vswitch на другой? Помимо того, что "новый" не подключен ни к чему, я действительно не вижу в этом смысла.
Hyper-V достаточно умен, чтобы отправлять трафик с vswitch на физическую сетевую карту только тогда, когда трафик маршрутизируется из хоста, а это значит, что вы уже делаете то, чего пытаетесь добиться.