我有一个api,当我向它发送一个学生ID时,它会返回学生数据。现在,我想测试一下每秒有1000个用户点击的api。 我的笔记本电脑配置-酷睿i5,内存8 gB 我的jmeter完成测试,但是线程显示错误
summary + 2642 in 00:00:30 = 88.0/s Avg: 938 Min: 59 Max: 130375 Err: 3 (0.11%) Active: 993 Started: 1000 Finished: 7
Generate Summary Results = 14824 in 00:02:54 = 85.3/s Avg: 1699 Min: 59 Max: 130375 Err: 54 (0.36%)
summary = 14824 in 00:02:54 = 85.3/s Avg: 1699 Min: 59 Max: 130375 Err: 54 (0.36%)
Generate Summary Results + 2636 in 00:00:30 = 87.9/s Avg: 613 Min: 59 Max: 15489 Err: 2 (0.08%) Active: 977 Started: 1000 Finished: 23
Generate Summary Results = 17460 in 00:03:24 = 85.7/s Avg: 1535 Min: 59 Max: 130375 Err: 56 (0.32%)
summary + 2636 in 00:00:30 = 87.9/s Avg: 614 Min: 59 Max: 15489 Err: 2 (0.08%) Active: 977 Started: 1000 Finished: 23
summary = 17460 in 00:03:24 = 85.7/s Avg: 1535 Min: 59 Max: 130375 Err: 56 (0.32%)
:
:
:
:
summary = 17460 in 00:010:24 = 123.7/s Avg: 5535 Min: 59 Max: 130375 Err: 723 (70.3%)
到723线程结束时失败
如果我与100个用户一起运行测试,则我的api返回响应,但测试成功,但是当我与1000个用户一起运行时,大多数线程失败或在完成后仍保持活动状态
答案 0 :(得分:1)
JMeter的默认配置不适合高负载,您需要对其进行调整才能启动1000个线程。
确保在测试过程中监视运行JMeter的计算机上的CPU和RAM使用情况,可以为此使用JMeter PerfMon plugin。 JMeter必须有足够的运行空间,如果缺少RAM或CPU,它将无法足够快地发送请求。如果您发现JMeter机器过载-您将不得不考虑distributed testing
Harwdare的要求将根据测试性质的不同而有所不同,即测试前后的处理器数量,断言,请求和响应大小,应用程序响应时间等,因此没有像X硬件= Y虚拟用户这样的映射。 ,您将需要针对每个不同的测试计划进行评估。请记住逐渐增加负载并关注健康指标
答案 1 :(得分:0)
让我们使用简单的数学来计算它。在HTTP请求的最大线程大小下,大约为。 1MB(有效负载除外)。
1MB * 1000 = 1000MB = 1000 GB并发用户需要至少1 GB的堆大小。
500 MB -用于其他任务,例如侦听器,汇总结果
总计至少需要 1500 MB 才能运行此测试。在 / apache-jmeter / bin / jmeter 文件中将jmeter配置为使用这样的内存。
多线程也取决于CPU能力,因此请尝试使用多核CPU。
什么是CPU上的线程? 在计算机体系结构中,多线程是中央处理器(CPU)(或多核处理器中的单核)能够同时执行多个进程或线程(由操作系统支持)的能力。