gpt4 book ai didi

java - 寻求设计负载测试的帮助

转载 作者:行者123 更新时间:2023-12-02 05:11:41 28 4
gpt4 key购买 nike

我的任务是对我的团队设计和构建的软件进行负载测试。它是一个 Java Web 应用程序,充当我公司制作的所有其他应用程序的 API。

这是系统的粗略轮廓:

1) Application 1 needs information from the database.

2) App 1 produces a request to a rabbit exchange (routing key for the queue that is consumed by the tool I'm testing).

3) My tool consumes the RabbitMQ queue that App1 pushed to

4) My tool executes the request sent from App1 via the Rabbit queue

5) My tool then sends the response back to App 1 via a Rabbit Exchange/Reply Queue.

6) App 1 then consumes from the reply queue and handles the response

这是一个非常低级别的 View ,因为每个应用程序都有很多实例发布到队列并使用队列。

我以前从未对任何东西进行过负载测试,所以我对可用的概念和工具很陌生。

现在我正在使用 jMeter 发起调用并使用回复(我让它像示例中的应用程序 1 一样运行,它通过兔子调用并使用回复)。

这是我的问题:

1) Is this a viable way to load test? Should I be testing the capacity of the server directly or should I continue going through rabbit since it's a closer to production use case?

2) What is the best way to adjust my rate of production? I've tried doing some throttling via jMeter but when I look at the rabbit graphs the publish rate seems to fluctuate wildly. Example: I tell jMeter to publish at 1000 messages/sec and the graph on the rabbit dashboard goes from 500/sec to 3000/sec. I don't feel like I can accurately get an idea of what we can handle if I can reliably adjust the rate.

我的计划是:

1) Find the rate at which my application can't pick things off the queue fast enough. (where the rate of publishing to the queue becomes faster than my application can consume them). 

2) Once I know the fastest I can send stuff to the queue I can check the responses for error rate and processing time.

我在想,通过这样做,我可以计算出我们可以发布到队列的最大速率,同时仍处于可接受的错误率范围内,并了解周转时间是多少。

还有什么我应该寻找的吗?为了取得成功,我应该了解负载测试的任何“规则”?

谢谢!

最佳答案

我认为你应该考虑以下事情,

  1. 对于任何复杂系统(包括多个组件)的负载测试,请按组件(App1、Rabbit 队列、生产者、消费者)划分负载测试。

    这背后的原因是在一次测试中你无法获得系统中的瓶颈,否则会导致不正确的结果。

  2. 在我的团队中,我们曾经有过这样的任务(发布者 - 消费者模型)。没有任何规则规定进行负载测试时您必须使用任何负载测试工具。可以充当负载生成器(发布者)的简单 java 代码和消耗负载(消费者)的简单 java 代码足以进行负载测试。

  3. JMeter 是一个不错的选择(免费、可扩展、可靠、业界知名),但您可以检查 LoadRunner、Neoload 等。

恕我直言,您应该分离组件并单独测试它们,这将帮助您找到答案,例如什么是最大消费者速率和什么是最大发布者速率。一个简单的 java 代码就可以为您做到这一点。您不需要 JMeter 请求。这样您就可以更好地控制生产率和消耗率。

是的,你的计划是正确的,找到最大值。定价发布者和消费者可以为您提供的最大可能价格。系统吞吐量。执行此操作时,还要注意系统利用率。

最后,当您获得稳定系统的测量值时,您可以选择 2 个选项,

1. Stress test (when system breaks)
2. Tune the system to improve the performance and repeat the cycle for new measurements.

我希望现在一些困惑已经清楚了:)

关于java - 寻求设计负载测试的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27284001/

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