Часто установка нашего локального приложения на основе debian-stable выполняется на виртуальной машине - обычно в VMware ESXi. В общем случае мы не видим и не влияем на их среду виртуализации, а также не имеем доступа, например, к клиент VMware vCenter или аналогичный. Здесь я сосредоточен на VMware, потому что это, безусловно, наиболее распространенный вид.
Мы бы хотели:
Теперь что такое X, Y и Z?
Мы неоднократно видели, что когда возникают проблемы с производительностью, проблема не в нашем приложении, а в среде виртуализации. Например. другая виртуальная машина использует тонны ЦП, памяти или сети SAN, на которой фактически хранятся диски, активно используется чем-то другим, кроме нашего приложения. В настоящее время у нас нет возможности доказать или опровергнуть это.
Теоретически также может быть, что иногда наше приложение работает медленно ... ;-)
Как определить основную причину наших проблем с производительностью: виртуальная среда или наше приложение?
Обычно существует 3 области проблем с производительностью CPU, Memory и DISK I / O.
Например, в Администратор VMware может указать резервирование и лимит, выраженные в МГц, но, например, 512 МГц на одном узле ESX точно так же, как 512 МГц на другом узле ESX, возможно, в совершенно другом кластере ESX?
И как определить, получаем ли мы это на самом деле? Пока наше приложение работает, мы, возможно, видим, что загрузка ЦП на 4 ЦП составляет 212%. Это потому, что наше приложение много делает или потому, что другая виртуальная машина на том же хосте выполняет задачу с интенсивным использованием ЦП и использует весь ЦП?
Если мы попросим, например, 16 ГБ оперативной памяти, которую часто настраивают, но из-за воздушный шар, на самом деле мы получаем только 4 ГБ, и, что удивительно, наше приложение работает плохо.
У инструментов VMware можно спросить о текущем всплытии, но мы обнаружили, что он часто лжет (или, по крайней мере, неточен). Мы видели примеры, когда ОС считает, что общий объем ОЗУ составляет 16 ГБ, сумма резидентной памяти (RSS) всех процессов составляет 4 ГБ ОЗУ, но свободно только 2 ГБ ОЗУ, даже когда инструменты VMware сообщают нам, что нет всплывающих окон: - (
Кроме того, простое добавление RSS вместе недопустимо, так как легко может быть общая RAM, например память для копирования при записи, поэтому 512 МБ + 512 МБ не обязательно означают 1 ГБ, но могут означать что-то меньшее. Таким образом, нельзя просто вычесть RSS из всех процессов, чтобы измерить, сколько оперативной памяти должно быть освобождено, и тем самым надежно обнаружить раздувание. Можно обнаружить некоторые случаи раздувания, но есть и другие случаи, когда раздувание действует, но не обнаруживается этим методом.
Я предполагаю, что мы могли бы построить график количества операций чтения и записи на диск, количества прочитанных и записанных байтов и% ожидания ввода-вывода. Но даст ли это нам точную картину дискового ввода-вывода? Я предполагаю, что если есть биткойн-майнер, работающий на другой виртуальной машине, использующей весь ЦП, наш% ожидания ввода-вывода будет увеличиваться, даже если базовая сеть SAN дает точно такую же производительность просто потому, что наши ресурсы ЦП сокращаются, и, следовательно, ожидание ввода-вывода (который измеряется в%) Продолжается.
Итак, вкратце, на каком языке мы можем описать, например, администратор VMware, какая производительность нам нужна портативным и измеримым образом?
Серьезно, большинство администраторов VMware в этом не разбираются: Плохое понимание управления ресурсами, часто отсутствие знаний о Linux (это помогает) и нехватка времени. Я считаю, что большинству штатных администраторов сложно поддерживать глубокие знания в области виртуализации.
К счастью, есть книга, которую ты можешь прочитать!
Большинство сред VMware не очень хороши: Плохая конструкция кластера, плохое планирование ресурсов, нестандартное хранилище (например, Synology NAS), неправильно настроенный HA, без мониторинга или исправлений.
VMware как организация подводит нас: Особенно плохо они распространяют самую свежую информацию и продвигают передовой опыт. Базовый поиск общих вопросов дает результаты в редакциях VMware 2009 г. и более ранних, несмотря на то, что процессы и дизайн со временем изменились.
Все это будет работать против вас.
Вы должны определить реальные требования к вашему решению. Возможность точно указать, что вашему прибору необходимы: 2 виртуальных ЦП, 8 ГБ ОЗУ и 500 операций ввода-вывода в секунду будет иметь большое значение для кого-то вроде меня.
Другой подход - наблюдать за здоровой или идеальной окружающей средой и экстраполировать оттуда показатели.
Вы описали проблемы с некоторыми развертываниями. Какие были проблемы и узкие места?
Пример ВМ нужного размера:
Сервер Exchange для организации с 300 пользователями.
Примеры мониторинга ресурсов ВМ.
Молодец: - ВМ нужного размера. - ЦП перегружен в кластере, но мы не сталкиваемся с конфликтом.
Плохо: