如何解决调用外部http服务的负载测试应用程序
感谢您寻找这个问题,我有一个应用程序,该应用程序从JMS Queue读取并处理消息,并将处理后的消息发布到外部http服务。使用加特林进行负载测试的最佳方法是什么。
我可以使用gatling.jms模拟队列上的负载。如何验证对外部服务的POST。
解决方法
使用加特林(Gatling)进行负载测试是一件相当复杂的事情,要正确执行。我已经做了足够的工作来了解一些陷阱,所以这里有一些有用的见解:
- 您想通过网络进行测试,并且希望将等待时间降到最低,以便最小化/消除由于网络等待时间引起的延迟,从而使结果显示可以快速处理/响应传入的HTTP请求。因此,如果您的应用程序位于欧洲东部的云中,则您希望从同一位置运行测试。如果您的请求来自美国西部,则从美国另一端发送请求会有很大的延迟,这可能会导致与您的应用程序之间的响应时间有很大差异。
- 从服务中删除所有其他负载。如果由于希望对正在运行的应用程序进行测试而无法删除负载,那么您需要进行另一个部署以对没有活动负载的应用进行测试
- 负载测试至少应运行45分钟(以我的经验),以验证您的服务可以处理负载。原因是服务器上无法承受的负载可能要花一些时间...因此您可以以33req / s的速度运行40分钟,但是运行45-60分钟时,其时间足够长您的应用程序可以应付的条件与导致灾难性故障的原因之间的平衡会趋于失败。
注意:
-
您不需要测试破坏力,但有时这是一个有用的指标。我发现在这里使用二进制搜索策略效果很好,可以相对快速地获得峰值负载。
-
您应该测试的是,您的应用程序可以处理最坏情况下预期的负载;不同的组织对他们的应用程序希望能够承受的负载量有不同的容忍度。在我工作过的某些地方,他们使用了很多优化措施来最大程度地减少直接加到服务器上的负载,但是,如果这些保护措施失败,则该服务器的处理流量将比通常的负载多10倍。在其他地方,没有进行相同的优化,而是有可用的灾难恢复系统,可以在主应用程序出现故障时进行恢复。在这种情况下,应用程序仅需要能够处理两倍于峰值负载(通过评估过去一年的日志/指标即可观察到)。
-
我主要使用JVM上的垃圾收集语言。我知道现在有零垃圾收集设计/功能可以帮助最大程度地减少GC任务堆积的影响...因此,几乎总是可以使用语言/内存设置,数据库索引或在您内部进行优化应用程序本身,或者您在开始更改硬件之前采用的有效执行任务的策略。
-
峰值负载可以通过日志/指标系统进行评估
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。