【问题标题】:How to duplicate production environment for Sidekiq load testing如何为 Sidekiq 负载测试复制生产环境
【发布时间】:2015-05-22 01:42:00
【问题描述】:

在我的公司,我们使用 Rails + Sidekiq 来引导我们的用户。当他们第一次登录时,我们通过一个数据管道为他们提供数据,该管道解析/聚合他们的数据,并调用外部 API。当一个工作人员完成时,它会为该用户在管道中排队下一个阶段。

我想改进我们的管道,因为(在某些情况下它很容易阻塞/饿死)。但我不想推广到生产环境,而是想创建一个本地环境,我可以在其中测试任意修改和用例——这就是这个问题的全部内容。具体来说,我想:

  • 创建一个在 Sidekiq 行为方面近似于生产的开发环境
  • 知道工人排队的顺序将类似于(如果不匹配)生产
  • 对外部服务的虚假/模拟调用
  • 测试任意情况,例如
    • 1、10、1000 人同时注册等
    • 外部服务的响应时间和可靠性从低到高差异
  • 量化工作人员绩效以比较结果 - 启动时间、花费时间、空闲/阻塞时间

根据我的搜索,现在我正在考虑使用 rspec 来运行我的任意测试用例,并使用 FactoryGirl 来模拟外部请求(伪造响应数据和改变响应时间)。我不知道这是否是一个好方法。谢谢

【问题讨论】:

    标签: ruby-on-rails rspec factory-bot sidekiq


    【解决方案1】:

    我认为 rspec 和 factory_girl 不适合负载测试。 它们的主要目的是单元测试。

    如果我是你,我会运行另一组服务器,与生产环境完全相同。 然后你可以写一些水豚场景,模拟真实用户与系统的交互。

    只有这样的方法才能保证您获得有价值的负载测试结果。

    如果你模拟所有外部 api 请求,它会让你的应用程序更快,所以你不会知道它在真正的生产模式下需要多长时间。

    【讨论】:

    • 感谢您的回复。澄清一下,我最感兴趣的是检查/比较如何在 sidekiq 中优先考虑工作,而不仅仅是性能。对于外部请求,在我们的特定情况下,实际进行调用是一个挑战,并且可能并不理想,因为我们希望尽可能地控制以专注于分析 Sidekiq 行为。
    • 无论如何,您应该运行 sidekiq 实例来进行此类压力测试。所以它不会是经典的 rspec 测试。看来您需要一些自定义测试框架。不确定此类工具是否公开存在。
    猜你喜欢
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多