【问题标题】:Maven build 3x as slow on OSXMaven 在 OSX 上构建速度慢 3 倍
【发布时间】:2012-03-28 17:43:18
【问题描述】:

我最近在工作中使用了新的 Macbook Pro,并注意到在 Maven2 中构建我们的代码库大约需要 15 分钟,而我团队中使用稍旧的 Macbook(但类似/相同规格)的其他人大约需要 5 分钟。四处打听后,我发现我团队中的另一个人构建需要 15 分钟以上。我说的是重新检查代码,我们所有人都使用相同版本的 Maven (2.2.1) 和 Java 版本:1.6.0_29,从项目的根目录运行“mvn clean install”。我们两个构建速度慢的人都在 Lion (10.7.3) 上,而构建时间为 5 分钟的人都在 Lion 或 Snow Leopard 上。我的机器有 8GB RAM 和 2.3 GHz i7,所以这似乎不是问题。 AFAIK,这台机器配备了 Lion(而不是从 Snow Leopard 升级而来),所以我不认为它是从 Snow Leopard 升级的,这似乎有些人遇到了问题。我们的慢速构建都有 5400 RPM 驱动器,而大多数其他人都有 7200 RPM 驱动器,但是,唉,其他 5 分钟构建的人中的一个与我们有完全相同的 5400 RPM 驱动器......所以那种规则出那个理论。

我已经运行了内存测试(检查正常),在磁盘工具中运行磁盘验证和权限修复(修复了一些权限问题,但没有更改构建时间),禁用交换,确保文件库已关闭,构建从不同的目录,一切都无济于事。一些有趣的点让我怀疑是操作系统问题:

  1. 我在所述机器上有一个 Ubuntu 虚拟机,在其中执行“mvn 全新安装”甚至比在 OSX 中本地运行要快得多(10 分钟对 15 分钟)!仅供参考,我们团队中的本地 Ubuntu 人员也构建了大约 5 分钟。几个月前,当我在我的 Windows 机器上的虚拟机中运行 Ubuntu 时,构建平均需要 15-20 分钟。
  2. 正常情况下,自行构建项目中最慢的组件大约需要 3-4 分钟。这个组件的有趣之处在于它的代码非常少。事实上,它只是一个测试用例和 135 MB 的资源文件。在这 3-4 分钟中,我数了一下大约有 100 多秒是在“复制 63 个资源”上。
  3. 在 OSX 安全模式下运行,构建上述最慢的组件仅需 42 秒,其中大约 7 秒用于复制 63 个资源。

目前我不确定还可以尝试什么,但我觉得我已经非常接近确定了。如果不是如此显着的差异,我不会那么担心,但 15 分钟与 5 分钟在我的工作流程中是巨大的。将我的工作电脑交给 Apple Genius 人员我感觉很不舒服,而且我们的 IT 人员不是 Mac 人员。重新安装操作系统似乎是我在网上看到的答案,但这似乎有点过分和侵入性。 (我意识到这可能更像是一个 OSX 问题而不是 Maven 问题,但 Maven 一直是我的基准。我没有注意到任何其他缓慢,但如果不使用其他人的计算机就很难说)

有没有人遇到过这样的事情?关于尝试什么的任何想法?谢谢

【问题讨论】:

  • 在我的工作场所,我的 OSX 机器上的构建速度比我个人的低规格机器慢,这是因为我的工作场所错误地将机器加入了 AD 域并安装了防病毒软件,我不知道具体原因,但两者都有相同的软件。除此之外,我的个人机器比具有两倍内存和两倍内核的更高规格的 RHEL 5.11 构建速度更快。

标签: performance maven-2 osx-lion


【解决方案1】:

在您的机器上运行mvn -X ... 命令并在快速机器上运行,并从日志文件中比较哪些任务/插件花费最多时间的时间。这应该给你一个起点。最慢的两个部分是文件系统扫描和用于检查工件/依赖项/插件更新的网络访问。

可以通过调整磁盘访问(例如缓存或切换到 SSD)来改进前者。

可以通过添加 Maven 存储库管理器来改进后者,例如 Nexus 或 Artifactory,它们将缓存和优化对所有远程 Maven 存储库的访问。

【讨论】:

  • +1 用于人工提示。在本地安装 artifactory 后,我看到了显着的加速。
  • 抱歉回复晚了。一直忙于其他事情担心这个。感谢您的想法。我们已经使用了 Artifactory,并且 mvn -X 比较并没有发现任何明显的东西。不过我还没有放弃这个问题,所以请不要关闭不要存档它。另一个有类似问题的队友最终重新安装了 OSX 以解决我一直认为可行的问题。我最终可能最终会这样做,但它仍然会让我不知道出了什么问题。他说重新安装 Lion 没有帮助,但不得不降级到 Snow Leopard。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 2013-12-15
  • 2014-01-02
  • 2021-09-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
相关资源
最近更新 更多