Как улучшить производительность сервера сборки Java?

Мы настраиваем новый сервер для интеграции сборки. Исходный сервер интеграции может завершить "установку mvn" за 3 минуты в коробке с Linux. Теперь, перейдя на сервер Windows 2012 на виртуальной машине, он сократился до 9 минут. Одна только часть теста mvn стоит 7 минут. Многие из этих тестов следуют одному и тому же шаблону: 1. Запустите новую JVM 2. Загрузите тестовые данные из файлов / таблиц Excel в базу данных в памяти 3. Запустите запросы к этой базе данных, проверьте результаты

Как вы думаете, как мы можем улучшить производительность этой виртуальной машины? Сервер уже имеет 16 ГБ памяти, 256 ГБ пространства, 8 виртуальных ЦП.

И вообще, как сервер сборки, большая часть работы выглядит следующим образом: 1. Считайте тысячи файлов из рабочей области, 2. Скомпилируйте приведенный выше исходный код, 3. Сгенерируйте тысячи файлов.class. 4. Jar/Zip эти тысячи файлов. 5. Скопируйте файлы jars zips куда-нибудь еще.

Кажется, это больше загружает ЦП и дисковый ввод-вывод, а не ОЗУ, верно?

Спасибо Jirong

2 ответа

Производительность нашего сервера сборки была увеличена за счет увеличения производительности дисковой подсистемы. Теперь мы запускаем 4 быстрых SSD в аппаратном RAID 10.

Чтобы убедиться, что диск - это ваша производительность, посмотрите на производительность дисковой подсистемы по сравнению с теоретической и посмотрите на задержку, потому что, когда задержка постоянно высока, у вас есть проблема.

В Windows вы можете использовать Perfmon или Windows Resource Monitor. В Linux используйте iostat. Клиент VMWare vshpere имеет графики на вкладке производительности для дисковой подсистемы.

Ответ на ваш вопрос можно обобщить практически на любую ситуацию:

  1. Начните собирать метрики (RAM, IO, CPU, сеть и т. Д.)
  2. Применить нагрузку к системе
  3. Анализ метрик для выявления узких мест
  4. Смягчить узкие места
  5. GOTO 1
Другие вопросы по тегам