Назад | Перейти на главную страницу

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

Мы настраиваем новый сервер для сборки интеграции. Исходный сервер интеграции может завершить «установку 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 имеет графики на вкладке производительности для дисковой подсистемы.

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

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