Мы настраиваем новый сервер для сборки интеграции. Исходный сервер интеграции может завершить «установку mvn» за 3 минуты в системе Linux. Теперь, перейдя на сервер Windows 2012 на виртуальной машине, время сократилось до 9 минут. Одна только часть "mvn test" стоит 7 минут. Многие из этих тестов выполняются по одному и тому же шаблону: 1. Запустите новую JVM. 2. Загрузите тестовые данные из файлов / электронных таблиц Excel в базу данных в памяти. 3. Выполните запросы к этой базе данных, проверьте результаты.
На ваш взгляд, как мы можем улучшить производительность этой виртуальной машины? На сервере уже есть 16 ГБ памяти, 256 ГБ пространства, 8 виртуальных ЦП.
И в целом, как сервер сборки, большая часть работы выглядит следующим образом: 1. Прочтите тысячи файлов из рабочей области, 2. Компилируйте приведенный выше исходный код, 3. Создайте тысячи файлов .class. 4. Архивируйте / заархивируйте эти тысячи файлов. 5. Скопируйте zip-файлы jars в другое место.
Кажется, что нагрузка на ЦП и дисковый ввод-вывод больше, чем на ОЗУ, верно?
Спасибо Jirong
Производительность нашего сервера сборки была увеличена за счет увеличения производительности дисковой подсистемы. Теперь мы запускаем 4 быстрых SSD в аппаратном RAID 10.
Чтобы убедиться, что диск является узким местом в производительности, посмотрите на ввод-вывод дисковой подсистемы по сравнению с теоретическим и посмотрите на задержку, потому что, когда задержка постоянно высока, у вас есть проблема.
В Windows вы можете использовать Perfmon или Windows Resource Monitor. В Linux используйте iostat. Клиент VMWare vshpere имеет графики на вкладке производительности для дисковой подсистемы.
Ответ на ваш вопрос можно обобщить примерно на любой ситуация: