【问题标题】:Build Server Hardware Configuration构建服务器硬件配置
【发布时间】:2010-10-14 14:19:00
【问题描述】:
所以我见过this question,但我正在寻找一些更一般的建议:你如何指定构建服务器?具体来说,我应该采取哪些步骤来确定确切的处理器, HD, RAM 等用于新的构建服务器。我应该考虑哪些因素来决定是否使用虚拟化?
我正在寻找我需要采取的一般步骤来决定购买什么硬件。让我得出具体结论的步骤 - 认为“我需要 4 gigs 的 ram”而不是“尽可能多的 RAM”
附:我故意不提供细节,因为我正在寻找“教人钓鱼”的答案,而不是只适用于我的情况的答案。
【问题讨论】:
标签:
build-process
continuous-integration
【解决方案1】:
答案是机器需要什么要求才能“构建”您的代码。这完全取决于您正在谈论的代码。
如果它有几千行代码,那么只需将那个旧桌面从壁橱中拉出来。如果它有几十亿行代码,那么请与银行经理谈谈,为您提供刀片机箱的贷款!
我认为从构建服务器开始的最佳方式是为自己购买一台新的开发人员机器,然后将旧机器重新构建为构建服务器。
【解决方案2】:
我将首先在您当前用于构建的任何系统上收集构建的一些性能指标。我会专门查看 CPU 和内存利用率、从磁盘读取和写入的数据量以及生成的网络流量(如果有的话)。在 Windows 上,您可以使用 perfmon 来获取所有这些数据;在 Linux 上,您可以使用 vmstat、iostat 和 top 等工具。找出瓶颈在哪里——你的构建 CPU 受限吗?磁盘绑定?渴望内存?这些问题的答案将指导您做出购买决定 - 如果您的构建对 CPU 造成冲击,但生成的数据相对较少,那么放入基于 SCSI 的 RAID 磁盘就是浪费钱。
在收集这些指标时,您可能还想尝试以不同级别的并行度运行您的构建。如果您使用 gnumake,请使用 -j 2、-j 4 和 -j 8 运行您的构建。这将帮助您查看构建是否受 CPU 或磁盘限制。
还要考虑一下,满足您需求的正确构建服务器实际上可能是一组廉价系统,而不是一个庞大的盒子——那里有很多分布式构建系统(gmake/distcc、pvmgmake、ElectricAccelerator 等) ) 可以帮助您比使用单个大型系统更好地利用一系列廉价计算机。
【解决方案3】:
需要考虑的事项:
预计将同时建设多少个项目?一个项目等待另一个项目完成是否可以接受?
您打算进行 CI 还是计划构建?
您的构建通常需要多长时间?
您使用的是什么构建软件?
大多数网络项目都足够小(构建时间不到 5 分钟),购买大型服务器没有任何意义。
例如,
我们有大约 20 名开发人员积极参与 6 个不同的项目。我们为所有项目使用运行 CI 的单个 TFS 构建服务器。他们将在每次签到时进行构建。
我们所有的项目都在 3 分钟内完成。
构建服务器是具有 4GB 内存的单四核。我们使用它的主要原因是为 QA 执行开发和暂存构建。构建完成后,该应用程序将自动部署到适当的服务器。它还负责针对这些项目运行单元测试和 Web 测试。
您使用的构建软件类型非常重要。 TFS 可以利用每个核心在解决方案中并行构建项目。如果您的构建软件无法做到这一点,那么您可能会根据需要研究拥有多个构建服务器。
【解决方案4】:
我们的商店支持 16 种产品,从数千行代码到数十万行代码(目前可能超过一百万行)。我们使用 3 台 HP 服务器(大约 5 年历史),双四核和 10GB RAM。这些磁盘是 7200 RPM SCSI 驱动器。全部通过命令行上的 msbuild 编译并启用并行编译。
使用这种设置,到目前为止,我们最大的瓶颈是磁盘 I/O。我们将彻底擦除我们的源代码并在每次构建时重新签出,删除和签出时间真的很慢。编译和发布时间也很慢。 CPU 和 RAM 没有远程征税。
我正在刷新这些服务器,因此我将走工作站级机器的路线,使用 4 个而不是 3 个,并用我能买得起的最好/最快的 SSD 替换 SCSI 驱动器。如果您有类似的设置,那么磁盘 I/O 应该是一个考虑因素。