Maven в 3 раза медленнее работает на OSX - PullRequest
4 голосов
/ 28 марта 2012

Недавно я получил новый Macbook Pro на работе и заметил, что создание нашей базы кода в Maven2 занимает около 15 минут, в то время как другие в моей команде с немного более старыми Macbooks (но схожими / такими же спецификациями) собирают около 5 минут. После расспросов я нашел еще одного человека в моей команде, сборка которого занимает более 15 минут. Я говорю о новой проверке кода, когда все мы работаем в одной и той же версии Maven (2.2.1) и версии Java: 1.6.0_29, и запускаем «mvn clean install» из корня проекта. Мы оба с медленной сборкой на Lion (10.7.3), в то время как люди с 5-минутной сборкой на Lion или Snow Leopard. У моей машины 8 ГБ оперативной памяти с 2,3 ГГц i7, так что, похоже, это не должно быть проблемой. AFAIK, машина поставлялась с Lion (по сравнению с Snow Leopard), поэтому я не думаю, что она была обновлена ​​с Snow Leopard, с которой, похоже, были проблемы у некоторых людей. У нас с медленными сборками есть 5400 об / мин, в то время как у большинства других есть 7200 об / мин, но, увы, один из других парней с 5-минутными сборками имеет точно такой же 5400 об / мин, что и мы ... так что вроде правила из этой теории.

Я запустил тест памяти (проверено нормально), запустил проверку диска и восстановление разрешений в Дисковой утилите (исправил некоторые проблемы с разрешениями, но не изменил время сборки), отключил подкачку, убедился, что filevault отключен, сборка из другого каталога, все безрезультатно. Несколько интересных моментов, которые заставляют меня подозревать проблему с ОС:

  1. У меня установлена ​​виртуальная машина Ubuntu на указанной машине, и выполнение «чистой установки» mvn там даже значительно быстрее, чем в OSX (10 минут против 15 минут)! К вашему сведению, родные ребята из Ubuntu в нашей команде также строят около 5 минут. А когда несколько месяцев назад я запускал Ubuntu на виртуальной машине в моем компьютере с Windows, сборка в среднем длилась 15-20 минут.
  2. Само создание самого медленного компонента нашего проекта обычно занимает около 3-4 минут. Интересно, что в этом компоненте очень мало кода. На самом деле все это - один контрольный пример и 135 МБ файлов ресурсов. Из 3-4 минут я насчитал около 100 с лишним секунд: «Копирование 63 ресурсов».
  3. При запуске в безопасном режиме OSX создание вышеупомянутого самого медленного компонента заняло всего 42 секунды, из которых около 7 секунд было потрачено на копирование 63 ресурсов.

Я не уверен, что еще можно попробовать на этом этапе, но я чувствую, что я так близок к тому, чтобы это зафиксировать. Если бы это не было такой заметной разницей, я бы не стал так сильно беспокоиться об этом, но 15 минут против 5 минут огромны в моем рабочем процессе. Мне не очень удобно отдавать свой рабочий компьютер парням из Apple Genius, а наш айтишник не Mac. Переустановка ОС, кажется, является ответом, который я видел в Интернете, но это кажется немного чрезмерным и навязчивым. (Я понимаю, что это скорее вопрос OSX, чем вопрос Maven, но Maven был моим эталоном. Я не замечаю никакой медлительности, но трудно сказать без использования компьютеров других) *

Кто-нибудь сталкивался с чем-то подобным? Есть идеи, что попробовать? Спасибо

1 Ответ

2 голосов
/ 28 марта 2012

Запустите команду mvn -X ... на своей машине и на быстрой и сравните время из файлов журнала, какие задачи / плагины занимают больше всего времени. Это должно дать вам отправную точку. Две самые медленные части - сканирование файловой системы и доступ к сети для проверки артефактов / зависимостей / обновлений плагинов.

Первый можно улучшить, настроив доступ к диску (например, кэш или переключение на SSD).

Последнее можно улучшить, добавив менеджер репозитория Maven, например Nexus или Artifactory, который будет кэшировать и оптимизировать доступ ко всем удаленным репозиториям Maven.

...