У меня есть сайт, на котором запущено приложение, очень чувствительное к вводу-выводу (Accredo Saturn); это бухгалтерский / CRM-пакет, написанный на Delphi с локальной базой данных плоских файлов.
По разным историческим причинам сайт запускал его на терминальном сервере Windows Server 2008 R2, работающем под управлением Server 2012 R2 Hyper-V на Proliant DL380 G9, а их DC был старым DL380 G7 с SBS 2011 (Exchange уже давно работает в Office 365. ).
Теперь я обновил их до нового DL380 G10 под управлением Server 2019. Хост и контроллер домена работают на 6x 600 ГБ 10k SAS в RAID10 (хост в собственном разделе, один большой раздел для остальных) на P408i-p, с сервером удаленного рабочего стола на 4x 480 ГБ смешанного использования SATA SSD в RAID10 на P408i-a. Сервер имеет 2x Xeon 4210 и 64 ГБ памяти. Данные для этого программного обеспечения находятся на VHDX на массиве SSD, установленном непосредственно на сервере удаленного рабочего стола.
У них 18 пользователей, все из которых используют сервер удаленного рабочего стола для этой программы, а 8 пользователей call-центра также используют агент телефонной системы Unify. Один или два используют Edge. Я намеревался немного переборщить со спецификациями, потому что этот клиент требователен к скорости, а программное обеспечение, как я уже упоминал, привередливо!
Клиент жаловался на низкую скорость работы программного обеспечения. Я протестировал и обнаружил, что операция, которая занимала 5 секунд, теперь занимает до 15. Старая виртуальная машина 2008 R2 на том же оборудовании работает так же, как и всегда, поэтому похоже, что это как-то связано с гостем .
Я запускал diskspd без пользователей, вошедших в систему (-c100b -b4K -o32 -F8 -T1b -s8b -W60 -d60 -Sh), и вижу аналогичные показатели операций ввода-вывода в секунду при чтении и пропускной способности на обеих виртуальных машинах, но с некоторыми широкими вариациями потоков на новая ВМ 2019. Я вижу около 531,41 Мбит / с и 136 тыс. Операций ввода-вывода в секунду для гостей, но два потока со скоростью 1,9 Мбит / с на виртуальной машине 2019 года. Старая виртуальная машина имеет скорость 520,44 Мбит / с, но стабильно около 72-76 на поток, за исключением одного потока со скоростью 3,75. Итого 133k IOPS. Это на массиве SSD.
Для сравнения, массив SSD с такими же параметрами дает мне 999 Мбит / с, стабильно 124-125 Мбит / с на поток и в сумме 255 тыс. Операций ввода-вывода в секунду.
Я целыми днями занимаюсь этим. Я пробовал использовать запись в реестре, чтобы отключить балансировщик нагрузки ввода-вывода, но безрезультатно - я не уверен, применимо ли это даже к 2019 году. Я пробовал как фиксированные, так и динамические VHDX - даже поменял местами объем данных между серверами (это это собственный VHDX). Пробовали динамическую и статическую память. Пробовали включать и отключать NUMA.
Я в своем уме, и у меня есть разочарованный клиент, который завтра запускает свой call-центр на старой виртуальной машине!
2008 R2 - это виртуальная машина поколения 1 версии 5, а модель 2019 года - это виртуальная машина 2 поколения, версия 9.
Будем признательны за любые намеки на возвращение этих операций ввода-вывода в секунду!
Это мой первый пост, поэтому извиняюсь, если я не включил достаточно актуальной или конкретной информации.
Это не свидетельствует о том, что проблема с производительностью связана с хранилищем.
Подробно проанализируйте медленный рабочий процесс приложения.
Какие пути кода для этого нужны? Определите, сколько времени занимает каждая функция.
Какие запросы к базе данных он выполняет?
Сколько записей данных задействовано, какого размера?
Скорее всего, вам понадобится помощь поставщика программного обеспечения, чтобы разобраться в этом вопросе. Настаивайте на подробном профилировании и видимости того типа, который вы получили бы от пакета мониторинга производительности приложений.
Ограничения ресурсов, такие как ЦП, память, IOPS, пропускная способность сети, могут быть причиной медленной работы. И это показатели, которые нужно измерить. Однако также возможно, что стек этого приложения в этой ОС не будет работать быстрее, даже если вы бросите на него оборудование. Единственный способ узнать - выделить то, что на самом деле является медленным.
на 6x 600 ГБ 10k SAS в RAID10
Установлен высокопроизводительный SSD-накопитель Raid 1 или 2x, который дает вам в 50 раз больше операций ввода-вывода?
Обычно: ПОЛУЧИТЕ SSD.
Сверху используйте SSD статического размера.
Вы не можете намного больше сделать - однако ваши цифры звучат безумно. Более 200 тыс. Операций ввода-вывода в секунду говорят о том, что программирование было ужасным.