Узкое место в пропускной способности виртуальной машины VMWare ESX

У меня есть 2 виртуальных сервера Apache с балансировкой нагрузки, которые обрабатывают пару тысяч запросов в минуту, и я пытаюсь диагностировать узкое место, которое замедляет их.

Каждый из моих веб-серверов имеет один виртуальный сетевой адаптер, а на его хостах VMWare по 7 гигабитных сетевых адаптеров. Все эти физические сетевые адаптеры подключаются к портам коммутатора со скоростью 100 Мбит / с.

Сначала я подумал, что хосты VMWare будут распределять всю доступную им полосу пропускания и распределять ее между виртуальными машинами в соответствии с потребностями. Тем не менее, мне интересно, если я ошибаюсь по этому поводу.

То, как мой коллега объяснил мне это, если у меня есть только один виртуальный сетевой адаптер в виртуальной машине, он будет привязываться к одному физическому сетевому адаптеру, а не объединять пропускную способность всех из них - поэтому в моей ситуации это ограничено Пропускная способность порта коммутатора до 100 Мбит / с. это верно?

Кроме того, будут ли два соединения со скоростью 100 Мбит / с (по одному на каждом сервере) узким местом на сайте, который обрабатывает только 1000-2000 запросов в минуту?

1 ответ

Решение

Что касается взаимодействия NIC, ваш коллега более или менее корректен.

По умолчанию объединение сетевых карт в ESX сопоставляет каждый виртуальный сетевой адаптер в вашей виртуальной машине с одним восходящим каналом (физическими сетевыми картами) на vSwitch, к которому он подключен. Конкретные политики подавления нагрузки NIC:

  • Идентификатор порта: весь трафик от каждого Виртуального сетевого адаптера сопоставляется одной восходящей линии связи на основе номера порта.
  • Хэш исходного Mac: весь трафик от каждого виртуального сетевого адаптера отображается на одну восходящую линию на основе хэша MAC-адреса виртуального сетевого адаптера
  • IP-хэш: для выбора восходящей линии связи используется хэш IP-адресов источника и назначения для трафика на основе IP.

Из этих трех только хеширование IP даст вам эффект агрегирования. ESX может контролировать только выбор пути исходящего трафика, поэтому для правильного распределения входящего и исходящего трафика ваши физические коммутаторы также должны быть настроены для агрегации портов (Etherchannel\LACP).

Здесь есть очень полезная статья VMware KB о том, как настроить различные коммутаторы (Cisco\HP), чтобы распределять как входящий трафик (где коммутатор должен выбирать выбор пути), так и исходящий (где ESX обрабатывает выбор пути).

Обратите внимание, что ни одна из этих политик никогда не приведет к распределению трафика по нескольким восходящим линиям для трафика между одним исходным IP-адресом и одним назначением, они обеспечивают агрегацию только тогда, когда задействован диапазон IP-адресов.

Чтобы ответить на ваш второй вопрос - это зависит от того, сколько данных включает каждый запрос. Одно 100-мегабитное соединение может передавать около 8000 пакетов в секунду, возможно, даже больше, если размер полезной нагрузки намного меньше 1500 байт. Однако (если существенно упростить задачу и игнорировать накладные расходы), если типичный запрос включает в себя, например, 30 тыс. Данных, то для завершения каждого из них потребуется 20 пакетов, поэтому теоретически NIC может обрабатывать около 250 таких запросов в секунду. Если ваши запросы включают в себя 1 Мегабайт трафика в среднем, вы в лучшем случае снижаете до 7/8 запросов в секунду, и при нормальных условиях я бы сказал, что у вас все будет в порядке, если вы получите реальные цифры, которые>50% этих показателей.

Это просто для того, чтобы получить приблизительное представление о том, может ли ссылка передавать пропускную способность необработанных данных. Чтобы приблизиться к тому, что может обрабатывать конкретная ссылка, вам также необходимо учесть все связанные с этим рукопожатия, сквозную задержку между клиентом и сервером, сколько одновременных соединений ваша архитектура может поддерживать в рабочем состоянии и многое другое.

Другие вопросы по тегам