我有单个API进行测试,我想用这个API实现30K TPS。任何机构都能完全解释我如何使用Jmeter进行测试吗?它可能有20,40或60个用户,但我想使用Jmeter UI模式实现这一点?
你的问题太宽泛了。
无论如何,简单而直接的答案是您可能无法在UI模式下实现此功能,并且您可能需要多个从站。如果您的API的SLA为1秒,则执行1秒调整的单个线程将在一小时内产生3600个事务(1 TPS)。因此,您需要在JMeter中使用30,000个线程才能达到30,000 TPS。
JMeter GUI不适用于负载测试,而仅适用于测试计划调试目的。 GUI非常耗费资源并且占用大量内存。在Non-GUI模式下执行负载测试是更好和更强烈建议的。
在GUI模式下运行JMeter时,您将看到:
由于30K TPS太高而无法测试,因此必须提供足够数量的线程。要计算此测试所需的线程数,您还需要知道API的最大响应时间。
以下是线程数计算的公式:
TPS *最大响应时间秒
例如,如果你有响应时间1 second
,那么要生成30K TPS
你需要30K threads
。如果API的响应时间是500ms
,那么你至少需要15K threads
。
要产生这种高负载,您还需要使用Distributed Testing,因为您将无法从单台机器生成如此高的负载。要确定您可以从一台机器生成多少个线程,您还需要自己测试。尝试逐渐增加线程数并监控机器的运行状况。如果它消耗机器运行状况的70-80%
(CPU,内存,磁盘),则停止测试并标记线程数。现在,您可以假设需要多少台计算机来测试此方案。
最后,我建议你仔细检查你的测试要求,因为30K TPS(每小时108000000
请求)太高了!
有关更多信息,请参阅Apache JMeter's Best Practices。