Проблемы с производительностью виртуальной машины на ESX/ESXi могут быть вызваны по различным причинам, например, ограничения в работе CPU, излишний объём памяти, задержкой в работе хранилищ или сети. Если одна или более из ваших виртуальных машин показывает высокое время ответа, то проверьте каждую из возможных причин, чтобы выявить слабое место системы.
Неисправности
- Сервисы на гостевых виртуальных машинах работают медленно
- Приложения на гостевых виртуальных машинах отвечают с задержкой
- Гостевая виртуальная машина работает медленно или не отвечает
Решение
Каждый нижестоящий шаг содержит инструкции и ссылки на соответствующие документы. Шаги выстроены в наиболее удобном порядке для выявления и решения проблемы. Такая последовательность также обеспечивает наименьшую потерю данных.
Замечание: после завершения каждого шага отмечайте сохраниться ли проблема с производительностью. Не пропускайте шаги и выполняйте их в указанном порядке.
Статья включает в себя 4 основных части:
- Ограничения в работе CPU
- Излишний объём памяти
- Задержка в работе хранилища
- Сетевые задержки
Ограничения в работе CPU
Чтобы определить являются ли ограничения в работе CPU причиной низкой производительности:
- Введите команду
esxtop
, чтобы проверить перегружен ли ESXi/ESX server. Изучитеload average
в первой строке вывода команд. Средняя загрузка на уровне1.00
означает, что физические процессоры (CPUs) машины с ESXi/ESX Server используются полностью, средняя загрузка0.5
означает использование лишь половины ресурсов. Средняя загрузка на уровне2.00
означает, что система перегружена. -
Изучите поле
%READY
, чтобы узнать долю времени, в течении которого виртуальная машина была готова, но не могла быть запланирована для запуска на физическом процессоре. При нормальных условиях эксплуатации это значение должно оставаться в пределах 5%. Если время готовности на виртуальных машинах с низкой производительностью слишком высокое, то необходимо проверить ограничения в работе процессора - убедитесь, что виртуальная машина не ограничена установленным лимитом процессора;
Проверьте не ограничена ли виртуальная машина доступным объёмом ресурсов.
Если средняя загрузка слишком высока и время, в течении которого машина готова к работе, не зависит от ограничений в работе процессора, то следует отрегулировать загрузку CPU хостa. Чтобы отрегулировать загрузку CPU хоста нужно:
- Увеличить количество физических CPU хоста
- Или уменьшить количество выделенных хосту виртуальных CPU. Чтобы уменьшить количество выделенных хосту виртуальных CPU нужно уменьшить общее количество CPU, выделенных всем запущенным виртуальным машинам на ESX хосте.
- Или уменьшить количество запущенных виртуальных машин
Если Вы используете ESX 3.5, проверьте является ли проблемой совместное использование IRQ.
Перегрузка памяти
Чтобы определить является ли причиной низкой производительности перегрузка памяти необходимо:
- Ввести команду
esxtop
и установить перегружена ли память ESXi/ESX server. ИзучитеMEM overcommit avg
в первой строке вывода команд. Это значение отражает соотношение требуемого объёма памяти к объёму доступной памяти, минус 1.Пример
Если виртуальной машине требуется 4 ГБ ОЗУ и хост имеет 4 ГБ ОЗУ, то соотношение равно 1:1. После вычитания 1 (из 1:1) поле
MEM overcommit avg
выдаст значение 0. Память не перегружена и нет необходимости в дополнительном объёме. Если виртуальной машине требуется 6 ГБ ОЗУ и хост имеет 4 ГБ ОЗУ, то соотношение равно 1.5:1. После вычитания 1 (из 1:1) полеMEM overcommit avg
выдаст значение 0. Память перегружена на 50% и необходимо на 50% больше ОЗУ, чем доступно.Если память перегружена, то следует отрегулировать количество памяти хоста. Для этого необходимо:
- Увеличить количество физической ОЗУ хоста
- Или уменьшить количество памяти, выделяемое виртуальным машинам. Для уменьшения объёма выделенной ОЗУ нужно уменьшить общее количество ОЗУ, выделенной всем виртуальным машинам хоста
- Или уменьшить общее количество виртуальных машин хоста.
- Определить состояние виртуальных машин:
ballooning
илиswapping
Для определения состояния:
- Запустите
esxtop
- Введите
m
для памяти - Введите
f
для полей - Выберите букву
J
для Memory Ballooning Statistics (MCTL) - Посмотрите на значение
MCTLSZ
.MCTLSZ (MB)
отображает количество физической памяти гостя, переданной balloon driver. - Введите
f
для поля - Выберите букву для Memory Swap Statistics (SWAP STATS)
- Посмотрите на значение
SWCUR
.SWCUR (MB)
отражает текущую загрузку свопа
Для решения этой проблемы убедитесь, что ballooning или swapping не вызваны неправильно заданным объёмом памяти. Если объём памяти задан неверно, то его следует переназначить
- Запустите
Задержки в работе хранилища
Чтобы определить являются ли задержки в работе хранилища причиной низкой производительности: Проверьте связаны ли проблемы с локальным хранилищем. Перенесите виртуальные машины в другое хранилище.
- Уменьшите количество виртуальных машин на LUN.
- Поищите похожие записи на Windows гостей:
The device, DeviceScsiPort0, did not respond within the timeout period
- Используя
esxtop
найдите высокое время задержки DAVG. - Определите максимальную пропускную способность ввода/вывода с помощью команды
iometer
. - Сравните результаты
iometer
, полученные на VM, с результатами физической машины с этим же хранилищем. - Проверьте наличие конфликтов с резервированием SCSI.
- Если вы используете iSCSI хранилище и Jumbo фреймы, то следует проверить правильность конфигурации.
- При использовании iSCSI хранилища и многоканального iSCSI Software Initiator убедитесь, что всё правильно сконфигурировано.
Если вы обнаружили проблемы, связанные с хранилищем:
- Убедитесь в том, что ваша аппаратура и HBA карты сертифицированы для работы с ESX/ESXi.
- Проверьте обновления вашего физического сервера.
- Проверьте обновления прошивки вашего HBA.
- ESX верно определяет режим и политику пути для вашего SATP Storage вашего типа и PSP Path Selection.
Сетвые задержки
Производительность сети тесно связана с производительностью CPU. Поэтому сначала необходимо проверить работу CPU и после этого переходить к поиску проблем в сети. Для определения проблем с производительностью сети:
Проверьте максимальную пропускную способность от виртуальной машины с помощью Iperf.
Замечание: VMware не поддерживает и не рекомендует какую-либо конкретную стороннюю программу.
Во время использования Iperf измените размер окна TCP до 64 K
. Это также влияет на производительность. Для изменения размера окна TCP:
На стороне сервера введите:
iperf -s
На стороне клиента введите:
iperf.exe -c sqlsed -P 1 -i 1 -p 5001 -w 64K -f m -t 10 900M
- Запустите Iperf на машине вне хоста ESXi/ESX. Сравните полученные результаты с ожидаемыми результатами, с учётом физической среды.
- Запустите Iperf на другой машине вне хоста ESXi/ESX, VLAN и физический свитч должны оставаться прежними. Если производительность в порядке, а проблема появляется только на машине, расположенной в другом месте, то проблему нужно искать в вашей сетевой среде.
- Запустите Iperf между двумя виртуальными машинами на общем сервере/portgroup/vswitch. Если результат положительный, то можно исключить проблемы с памятью, CPU и хранилищем.
Если вы обнаружили «бутылочное горлышко» вашей сети, то:
- Если вы используете iSCSI хранилище и Jumbo фреймы, то следует проверить правильность конфигурации.
- Если вы используете Network I/O Control, то необходимо проверить правильность конфигурации общих ресурсов и ограничений для вашего траффика.
- Убедитесь в правильности работы трафик шейпинга.