GitLab质量检查团队如何使用GitLab性能工具

在DevOps实践和工具课程开始之前,准备了本文的翻译




我们启动了许多计划来改善GitLab的性能,我们需要一个新的基准工具。

性能测试是一个复杂的过程,不同于其他类型的测试。为了获得结果,这里需要专用资源,特殊方法和工具。当我加入公司并成为该团队的第一位成员时,我的任务是将新生的努力转移到更大的规模上。为此,我们制作了一个简单的名称为GitLab Performance Too l(GPT)的新工具

我们很高兴宣布GPT公开发布在这篇文章中,我们将描述我们如何使用GPT测试GitLab性能,以及如何使用它来测试环境。

但是,首先看一下我们使用它的方式。

参考架构和测试数据


根据我们的经验,性能测试中最困难的部分不是测试本身,而是设置正确的环境和测试数据。

因此,一项举措是开发GitLab参考架构,它可以应付大量用户。我们希望使用这些架构来标准化我们推荐的配置,从而为客户提供高性能,可伸缩且高度可访问的GitLab部署。

对于这样的工具,我们需要现实的测试数据,例如,具有提交和合并请求的大型项目。对于第一次迭代,我们采用了GitLab本身的项目。

设置并运行测试环境后,我们准备使用GPT对其进行测试。

什么是GitLab性能工具(GPT)?


GPT可用于为GitLab基准测试运行各种负载测试。所需要做的就是找出测试环境可以承受的吞吐量(以每秒请求的形式),并确保准备测试数据。

GPT是在用于负载测试的领先工具之一k6的基础上开发的以下是一些GPT功能:

  • 开箱即用的大量测试,涵盖了各种GitLab端点,并能够添加您自己的测试。有关完成的测试说明,请参见文档;通常会在其中添加新的测试。
  • , GitLab .
  • .
  • .
  • , time to first byte ( ), .

有才华的Load Impact团队创建了k6,这是GPT的核心。我们很快意识到,我们不需要重新发明轮子,因为k6满足了我们的大多数要求:它是用Go语言编写的,这就是为什么它非常高效和开源的原因。感谢团队不仅开发了k6,还感谢与我们的合作。

我们如何使用GPT


GPT用于几个自动的GitLab CI管道中,以提供有关GitLab操作的快速反馈。参考架构的CI管道可与最新的预发行版一起使用,并且通常每天或每周运行一次。测试后,我们立即分析结果以发现问题。我们根据透明度值GPT Wiki中发布所有最新结果 在基准测试管道中还使用了GPT,以查看GitLab的性能在不同版本之间如何变化。这些结果很重要,因为它们显示出性能有所提高。基准比较结果也可以在GPT Wiki上获得



使用GPT,我们能够确定GitLab性能的几个瓶颈,并与开发人员一起确定改进的优先级。这个过程已经取得了回报,我们期待每一个GitLab版本都能提高性能。例如,版本12.6 在所有方面都显示了几项显着的改进,其中之一是减少了92%!您可以在我们的错误跟踪器中看到检测到的问题

您如何使用GPT


长期以来,我们一直决定要遵循与主要产品相同的开源原则,因此,在创建GPT时,我们专注于所有用户,而不是使其成为专有的内部产品。因此,我们不仅允许他人使用它,而且鼓励它!这对我们和我们的客户都是有益的,因为我们收到了我们未曾考虑过的不同观点的反馈。这方面的一些示例是针对建议的基于带宽的规范的改进准则,或者针对具有私有云的用户改进了脱机使用GPT的方法

如果您想自己使用GPT,那么最好从文档开始如上所述,使用GPT的大部分工作是准备适当的环境。该文档讨论了这一点以及GPT的直接使用。

行动中的GPT


最后,在讨论了GPT之后,该是将其付诸实践的时候了。以下是针对具有10k参考体系结构List Group Projects API进行负载测试的方式asciinema.org/a/O96Wc5fyxvLb1IDyviTwbujj8 有关结果的更多信息,请参阅GPT 文档






下一步是什么


我们的目标是使GitLab在性能方面达到同类最佳。而我们才刚刚开始。我们很高兴可以通过为他们提供其他工具来提高客户服务的质量。

我们对未来版本的一些计划包括扩大对GitLab功能的测试范围,入口点(API,Web,Git),扩大参考体系结构,测试数据和用户行为模式的工作,以使其更具代表性和现实性。

GPT项目存储库中分享您的GPT反馈和/或建议我们欢迎您的想法和建议。



Ansible:快速入门。



All Articles