gpt4 book ai didi

performance - 如何调试构建机器错误设置的性能?

转载 作者:行者123 更新时间:2023-12-04 03:03:05 24 4
gpt4 key购买 nike

我们必须定期设置新的构建环境,这个过程似乎并不那么简单。今天我有了一台新的构建机器,第一次 Maven 构建太慢了,我想澄清一下为什么性能这么差。但是怎么做呢?

我们的背景是:

  • 我们使用多台构建机器,每个项目都有自己的。
  • 每台构建机器都有类似的设置,因此项目可以立即启动,无需进行大量配置。
  • 我们预先配置了以下工具:
  • Hudson(当前为 2.1.1,但会更改)
  • 神器 2.3.3.1
  • 声纳
  • Hudson、Artifactory 和 Sonar 都配置了自己的 Tomcat
  • Maven 2.2.1 和 Maven 3.0.3(没有用户配置,只有安装有 settings.xml)
  • Ant 1.7.1 和 Ant 1.8.2(此处不相关)
  • Subversion 1.6 客户端

  • 所有工具都应该协同工作,尤其是存储库链应该是:
  • 建机Maven仓库
  • 建机神器
  • 中央公司 Artifactory(作为世界的镜像和缓存工作)
  • Maven 中央(和其他存储库)

  • 因此,当 Maven 构建需要解析依赖项时,它将首先在本地 Maven 存储库中查找,然后在本地 Artifactory 存储库中查找,然后在中央 Artifactory 存储库中查找,然后才在 Internet 上查找。

    我们通常必须使用代理来连接到 Internet,我们的 Intranet 中不需要它。

    第一个构建(Maven Hello World)在大约 45 分钟内构建完成。在那段时间,所有的引导都在发生,但我本以为通过使用我们的存储库链(中央存储库被充分填充的地方),构建速度会快得多。所以我认为调试的重点将是网络,本地构建不是问题。所以Maven和Artifactory的配置和交互正在考虑中。

    你如何调试这样的环境?我可以访问构建机器(作为 sudo)和中央存储库,但我不知道如何开始、证明什么、在哪里查看。那么您的经验是什么,您想分享哪些提示和技巧?

    最佳答案

    以下是我迄今为止所做的一些事情。如果您有其他建议,欢迎您!

    我怀疑存储库链是邪恶的根源,所以我首先解决了这个问题。原因是:

  • 本地机器上的真实构建(hello world 程序)可能会以毫秒为单位有所不同,但不会以分钟为单位。
  • 网络有所作为,所以首先攻击。

  • 如果在本地找不到某些东西,那么存储库链很有趣。以下是确保这种情况的步骤:
  • 对于Maven,删除本地缓存的内容。如果本地缓存已满,您不知道是否在本地缓存或其他地方找到了资源。 (至少在最后这样做,如果其他一切都恢复正常。)
  • 对于 Artifactory,也找到该缓存,并通过删除其内容来清理它。它只是一个缓存,所以它会被填充一个新的。
  • 如果您使用智能浏览器来测量查找,请确保您所请求的内容不在浏览器的缓存中。
  • 否则使用类似 wget 的工具求资源。
  • 尽量减少失败的根源。因此,请尝试将查找的长距离划分为您控制的较小段。
  • 不要使用 Maven 进行查找,首先使用 Artifactory 存储库(仅),然后使用 Maven。

  • 这导致了我想做的以下测试。每次我确保满足之前的先决条件时:
  • 索取 https://<my-project-artifactory>/repo/<my-pom> .期待:
  • 本地查找将失败,因此必须在中央公司 Artifactory 的远程存储库中查找资源。
  • 可能的影响可能来自代理、人工查找。

  • 结果:查找一个简单的 POM 需要大约 30 秒。那太多了。
  • 删除代理。与 wget , 有一个选项 --no-proxy这就是这样做的。期望:
  • 更快的查找。

  • 结果:根本没有变化,所以代理不是原因。
  • 索取 https://<my-project-artifactory>/libs-snapshots-company/<my-pom> .所以把虚拟仓库改成真正的远程仓库。期待:
  • Artifactory 知道在哪里进行查找,因此速度会快得多。

  • 结果:POM 立即被找到,所以这 30 秒是 Artifactory 做查找。但这可能是什么原因呢?
  • 在 Artifactory 中删除了所有远程和虚拟存储库(只留下我们公司的和缓存的 Maven 中心)。但是再次使用https://<my-project-artifactory>/repo/<my-pom> .期待:
  • Artifactory 会更快地找到存储库。

  • 结果:POM 瞬间出现,无法测量。
  • 然后我很勇敢,刚刚开始构建(本地缓存为空)。然后构建需要 5 秒(而不是同一天早上 15 分钟)。

  • 所以我想我现在已经更好地理解可能会出错的地方,还有很多问题。请添加您的想法作为答案,您将获得声誉!

    关于performance - 如何调试构建机器错误设置的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7666450/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com