我有一个要测试的API,并且我想使用此API达到30K TPS。谁能充分解释我如何用Jmeter进行测试?

时间:2019-03-15 13:51:17

标签: jmeter performance-testing

我有一个要测试的API,我想使用此API达到30K TPS。谁能充分解释我如何用Jmeter测试呢? 可能有20、40或60个用户,但我想使用Jmeter UI模式实现这一点?

2 个答案:

答案 0 :(得分:0)

您的问题过于笼统。

无论如何,简单直接的答案是您可能无法在UI模式下实现此目的,并且可能需要多个从属服务器。如果您的API的SLA为1秒,则以1秒的步调执行一个线程将在一个小时(1 TPS)中产生3600个事务。因此,您将需要在JMeter中使用30,000个线程来实现30,000 TPS。

答案 1 :(得分:0)

JMeter GUI不用于负载测试,而仅用于测试计划调试目的。 GUI非常占用资源,并且占用大量内存。强烈建议在Non-GUI模式下执行负载测试。

在GUI模式下运行JMeter时,您将看到以下内容:

enter image description here

由于30K TPS太高,要测试它,必须提供足够数量的线程。要计算此测试所需的线程数,您还需要知道API的最大响应时间。

这是线程号计算的公式:

  

TPS *最大响应时间(秒)

例如,如果您有响应时间1 second,那么要生成30K TPS,您需要30K threads。如果API的响应时间为500ms,则至少需要15K threads

要生成此高负载,您还需要进行Distributed Testing,因为您将无法从单台计算机生成如此高的负载。要确定您可以在一台计算机上生成多少个线程,还需要自己进行测试。尝试逐渐增加线程数并监视机器的运行状况。如果它消耗了您计算机的运行状况(CPU,内存,磁盘)的70-80%,请停止测试并标记线程数。现在,您可以假设需要多少台计算机来测试这种情况。

最后,我建议您仔细检查一下您的测试要求,因为30K TPS(每小时108000000请求)太高了!

有关更多信息,请参见Apache JMeter's Best Practices