前言
为了练习应用Jmeter
压测MQTT
,在内网环境搭建了EMQ v4.4
。整个环境应用了6台PC,CPU是雷同型号,EMQ服务器和控制机采纳8G内存,负载机4G内存。EMQ服务器和负载机均为CentOS7.9。
负载机环境
指标 | 数值 |
---|---|
CPU | Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz |
内核 | 4核8线程 |
内存 | 4GB |
零碎 | CentOS Linux release 7.9.2009 (Core) |
JDK | openjdk version "1.8.0_322" |
Jmeter | 5.4.3 |
场景设计
继续压测10分钟,公布音讯配置高斯随机定时器,4-8毫秒。由4台压测机发动申请。别离设置,线程数别离配置1000、2000、3000、4000、5000。
后果
线程数 | 申请数 | 谬误数 | TPS | 最大响应工夫 | 90%响应工夫 |
---|---|---|---|---|---|
1000 * 4 | 9627201 | 0 | 16039.29 | 83 | 0.00 |
2000 * 4 | 5797827 | 10170 | 9659.73 | 16937 | 0.00 |
3000 * 4 | 6280738 | 180735 | 10479.41 | 182095 | 1.00 |
4000 * 4 | 3300990 | 197869 | 5468.66 | 287839 | 1.00 |
5000 * 4 | 1932047 | 54728 | 3224.37 | 486245 | 87.00 |
剖析
在https://jmeter.apache.org/use...有阐明,对于Jmeter线程数的限度。原文摘录如下:
A single JMeter client running on a 2-3 GHz CPU (recent CPU) can handle 1000-2000 threads depending on the type of test.
2-3GHz的CPU,能反对1000-2000线程。而测试后果也映证了这一点。在压测过程中,负载机的内存使用率在70%-75%左右,然而CPU都爆满。