我有一个要测试的API,我想使用此API达到30K TPS。谁能充分解释我如何用Jmeter测试呢? 可能有20、40或60个用户,但我想使用Jmeter UI模式实现这一点?
答案 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时,您将看到以下内容:
由于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。