Мы используем приложение, в котором одновременно работают около 300 пользователей. Теперь все виртуализировано: 1 виртуальная машина как балансировщик нагрузки, 2 виртуальные машины как веб-сервер (на этом хосте ESXi есть еще +25 других виртуальных машин) и 1 сервер (голый металл) как SQL Server. У нас возникли проблемы с производительностью, и мы решили купить физическое оборудование, чтобы повысить ее производительность.
Я не уверен, как мы можем улучшить производительность ?:
мы покупаем 1 серверное оборудование в стойку и запускаем ESXi со всеми тремя виртуальными машинами, указанными выше,
мы покупаем 1-1 стойку Серверное оборудование для веб-серверов и устанавливаем Windows-сервер вместе с приложением. (и оставим балансировщик нагрузки как раньше - ВМ)
Пользователи подключаются к серверу через веб-интерфейс / настольное приложение.
Спасибо за помощь, drewo
Без исследования причины проблем с производительностью и знания своего приложения вы не сможете сказать, какое решение будет самым простым / лучшим.
В случае, если ваша проблема действительно связана с отсутствием мониторинга аппаратных ресурсов, должно быть довольно ясно, где вы сейчас достигаете пределов и что покупать (ядра процессора или скорость процессора, больше оперативной памяти, более быстрые диски) и где это назначить .
По моему опыту, более половины проблем с производительностью можно было более или менее легко решить с помощью правильной настройки, а не путем увеличения аппаратных ресурсов. Большинство разработчиков и слишком много поставщиков не имеют возможности или ресурсов для тестирования своих приложений и серверной части базы данных с тем же объемом данных и такой же нагрузкой, что и в производственной среде, и они делают предположения и конструктивные решения, которые тоже не масштабируются. хорошо на практике.
Тщательный мониторинг даст вам представление о ваших узких местах и о том, что вам может потребоваться решить в приложении, базе данных или на уровне оборудования.
Обратите внимание, что анализ производительности и настройка - это не только искусство, но и наука.
Очень распространенные проблемы приложений, которые можно легко решить и которые часто дают значительные преимущества:
Недостатки в дизайне приложения, которые труднее устранить, связаны с тем, что слишком много логики обработки данных находится во внешнем интерфейсе приложения, а запросы к базе данных слишком просты, несвязаны и возвращают слишком много данных (например, с SELECT * from GrowingDataSet
) - в вашем мониторинге симптомы могут быть самыми разными, например, высокая нагрузка на дисковый ввод-вывод на сервере базы данных - высокое потребление памяти на сервере приложений - перегруженные сетевые ссылки - каждый из которых может использоваться для поддержки различных решений о покупке оборудования (обновление на твердотельные накопители на сервере базы данных - увеличьте оперативную память на сервере приложений - обновите сеть), вероятно, ничего из этого не требуется, когда приложение начинает применять лучшую логику и разбиение на страницы в запросах.
Некоторые фрагменты информации, на которые вы должны найти ответ, прежде чем выбирать путь вперед:
Использование ЦП для затронутых ВМ
CPU ready
раз указывают, что хост был перегружен? Иногда вы видите практическое правило: вам нужно менее 5% среднего времени готовности, но мой опыт показывает, что даже это слишком много для системы, в которой вы действительно работаете. Обратите внимание, что если вы используете vCenter, указанное время готовности в миллисекундах с момента последнего обновления графика. В режиме реального времени график обновляется каждые 20 секунд (= 20000 мс), поэтому средний процент на ЦП для виртуальной машины можно рассчитать по формуле (indicated_ready_time * 100 / 20000) / number_of_vcpu
.Использование RAM
(Всегда следует проверять из гостевой операционной системы)
Также проверьте производительность диска и сети на предмет проблем с задержкой.
В зависимости от того, как масштабируется ваше приложение, возможно, стоит добавить больше веб-серверов, а не добавлять вычислительную мощность или память к существующим.
Как только вы поймете, где находятся ваши узкие места и как лучше всего использовать свое оборудование, вы можете начать делать бизнес-обоснование, что покупать.
Главный случай для виртуальных машин заключается в том, что ими проще управлять, проще создавать резервные копии и легче переносить их в случае сбоя системы. Они позволяют лучше использовать ваше оборудование при условии, что им фактически не требуются все ресурсы, которые вы можете им использовать, а если вы используете паравиртуализированные сетевые интерфейсы, связь между машинами на одном хосте будет настолько быстрой, насколько может управлять ЦП, а не ограничены скоростью физического сетевого интерфейса.
Система, работающая непосредственно на физической машине, конечно, не будет иметь накладных расходов из-за совместного использования ресурсов, но это только преимущество, если вы можете использовать доступную мощность.