前言
为了练习使用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都爆满。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。