文章目录
压力测试
压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。压测都是为了系统在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数。
使用压力测试,我们有希望找到很多种用其他测试方法更难发现的错误。有两种错误类型是:内存泄漏,并发与同步。
有效的压力测试系统将应用以下这些关键条件:重复,并发,量级,随机变化。
性能指标
- 响应时间(Response Time: RT)
响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。
-
HPS (Hits Per Second) :每秒点击次数,单位是次秒。
-
TPS (Transaction per Second);,系統每秒处理交易数,单位是笔秒。
-
OPS (Query per Second) :系统每秒处理查询次数,单位是次秒。
对于互联网业务中,如果某些业务有且仅有一个请求连接,那么TPS-QPS-HPS,一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器单击请求。
- 无论TPS. QPS. HPS,此指标是衡量系统处理能力非常重要的指标,越大越好,根据经验,一般情况下:
金融行业: 1000TPS-50000TPs,不包括互联网化的活动
保险行业: 100TPS-100000Tps. 包括互联网化的活动
制造行业: 10TPS-5000TPS
互联网电子商务: 1000OTPS-1000000TPS
互联网中型网站: 1000TPS-50000TPS
互联网小型网站: 500TPS~1000TPS
-
最大响应时间(Max Resonse Time,指用户发出请求或者指令到系统做出反应(响应)的最大时间。
-
最少响应时间(Mininum RespanseTime)指用户发出请求或者指令到系统做出反应(响应)的最少时间。
-
90%响应时间(90% Response Time) 是指所有用户的响应时间进行排序,第90%的响应时间。
-
从外部看,性能测试主要关注如下三个指标
吞吐量;每秒钟系统能够处理的请求数、任务数.
响应时间:服务处理一个请求或一个任务的耗时。
错误率:一批请求中结果出错的请求所占比例。
JMeter
JMeter安装
下载页
下载对应的压缩包,解压运行bin下的jmeter.bat即可

打开修改中文

添加线程组模拟用户

模拟200个用户1s内启动,循环100次,即20000个请求
添加http请求

请求百度

添加查看结果树,汇总报告

请求项目测试
可参考
JMeter Address Already in use错误解决
windows本身提供的端口访问机制的问题。
Windows提供给TCP/IP错接的端口为1024-5000,并且要四分钟来循环回收他们。就导致我们在短时间内跑大量的请求时将端口占落了.
1.cmd中,用regedit命令打开注册表
2在 HKEY LOCAL MACHINESYSTEM\CurrentControlSet\Services\Ticpip\lParameters 下,
1、右击parameters,添加一个新的DWORD.名字为MaxUserPort
2、然后双击MaxUserPort,输入数值数据为65534,基数选择十进制(如果是分布式运行的话,控制机器和负载机器都需要这样操作哦)
3、30s即回收端口 TCPTimedWaitDelay: 30
3,修改配置完毕之后记得重启机器才会生效
jconsole与jvisualvm
Jdk的两个小工具console visulvm (升级版的consoke),通过命令行启动,可监控本地和远程应用.远程应用需要配置
使用步骤
- SQL耗时越小越好,一般情况下微秒级别.
- 命中率越高越好,一般情况下不能低于95%
- 锁等待次数越低越好,等待时间越短越好。
优化
中间件对性能的影响
对Nginx进行测试

监控nginx状态
docker stats

内存消耗少。多计算、耗cpu
对Gateway进行压测,同时监控内存


耗cpu

伊甸园区内存小,GC频繁
简单优化吞吐量测试
对简单请求进行压测
/**
* 简单请求
* @return
*/
@ResponseBody
@GetMapping("/hello")
public String hello() {
return "hello";
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9



网关+简单请求
- id: product_route
#lb 表示转发至服务 服务也需注册到nacos
uri: lb://mall-product
predicates:
#当请求为指定路径 断言为真 **代表任意 这个路径需往上写提高优先级不被/api/**给拦截
- Path=/api/product/**,/hello
filters:
#断言为真,重写路径/api/(?<segment>.*)改为/$\{segment}
#例请求http://localhost:88/api/product/category/list/tree会改为
#http://mall-product端口/product/category/list/tree
- RewritePath=/api/(?<segment>.*),/$\{segment}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11

吞吐量下降
三级分类数据测试

nginx动静分离

将静态资源static包传输到nginx的html文件夹下

修改之前conf.d下商品服务配置文件,添加上规则
location /static/{
root /usr/share/nginx/html;
}
- 1
- 2
- 3
重启nginx
docker restart nginx
注意html文件中路径应该加上static,比如
href="/static/index/css/swiper-3.4.2.min.css"
模拟线上应用内存崩溃宕机情况
200个线程 并行下载6

设置vm参数:-Xmx=100m
服务崩溃:

正确参数:
-Xmx=1024m -Xms1024m -Xmn512m

测试数据表格
| 压测内容 | 压测线程数 | 吞吐量/s | 90%响应时间 | 99%响应时间 |
|---|---|---|---|---|
| Nginx | 50 | 8931 | 7 | 75 |
| Gateway | 50 | 8972 | 8 | 36 |
| 简单服务 | 50 | 5899 | 9 | 143 |
| 首页一级菜单渲染 | 50 | 270 | 267 | 365 |
| 三级分类数据获取 | 50 | 7 | 11192 | 12755 |
| 首页全量数据获取 | 50 | 8/19 | ||
| Nginx+Gateway | 50 | |||
| Gateway 简单服务 | 50 | 1940 | 44 | 96 |
| 全链路 | 50 | 968 | 120 | 350 |
中间件越多,性能损失越大,大多都损失网络交互了
业务:
Db(MySQL优化,加索引,关日志)
模板的渲染速度(开缓存)
优化三级分类数据获取
原有代码(查询了三次数据库):
/** * 查出所有分类 返回首页json * * @return */ @Override public Map<String, List<Catalog2Vo>> getCatalogJson() {<span class="token comment">//先查出所有一级分类</span> List<span class="token generics function"><span class="token punctuation"><</span>CategoryEntity<span class="token punctuation">></span></span> level1Categorys <span class="token operator">=</span> <span class="token function">getLevel1Categorys</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//封装数据 map k,v 结构</span> Map<span class="token operator"><</span>String<span class="token punctuation">,</span> List<span class="token generics function"><span class="token punctuation"><</span>Catalog2Vo<span class="token punctuation">></span></span><span class="token operator">></span> map <span class="token operator">=</span> level1Categorys<span class="token punctuation">.</span><span class="token function">stream</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">collect</span><span class="token punctuation">(</span>Collectors<span class="token punctuation">.</span><span class="token function">toMap</span><span class="token punctuation">(</span>k <span class="token operator">-</span><span class="token operator">></span> k<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> v <span class="token operator">-</span><span class="token operator">></span> <span class="token punctuation">{</span> <span class="token comment">//每一个的一级分类,查到这个一级分类的二级分类</span> List<span class="token generics function"><span class="token punctuation"><</span>CategoryEntity<span class="token punctuation">></span></span> category2Entities <span class="token operator">=</span> baseMapper<span class="token punctuation">.</span><span class="token function">selectList</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">QueryWrapper</span><span class="token generics function"><span class="token punctuation"><</span>CategoryEntity<span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">eq</span><span class="token punctuation">(</span><span class="token string">"parent_cid"</span><span class="token punctuation">,</span> v<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> List<span class="token generics function"><span class="token punctuation"><</span>Catalog2Vo<span class="token punctuation">></span></span> catelog2Vos <span class="token operator">=</span> null<span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>category2Entities <span class="token operator">!=</span> null<span class="token punctuation">)</span> <span class="token punctuation">{</span> catelog2Vos <span class="token operator">=</span> category2Entities<span class="token punctuation">.</span><span class="token function">stream</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>level2 <span class="token operator">-</span><span class="token operator">></span> <span class="token punctuation">{</span> <span class="token comment">//封装catalog2Vo</span> Catalog2Vo catalog2Vo <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Catalog2Vo</span><span class="token punctuation">(</span>v<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> null<span class="token punctuation">,</span> level2<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> level2<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//每一个二级分类,查到三级分类</span> List<span class="token generics function"><span class="token punctuation"><</span>CategoryEntity<span class="token punctuation">></span></span> category3Entities <span class="token operator">=</span> baseMapper<span class="token punctuation">.</span><span class="token function">selectList</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">QueryWrapper</span><span class="token generics function"><span class="token punctuation"><</span>CategoryEntity<span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">eq</span><span class="token punctuation">(</span><span class="token string">"parent_cid"</span><span class="token punctuation">,</span> level2<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>category3Entities <span class="token operator">!=</span> null<span class="token punctuation">)</span> <span class="token punctuation">{</span> List<span class="token generics function"><span class="token punctuation"><</span>Object<span class="token punctuation">></span></span> catalog3List <span class="token operator">=</span> category3Entities<span class="token punctuation">.</span><span class="token function">stream</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>level3 <span class="token operator">-</span><span class="token operator">></span> <span class="token punctuation">{</span> <span class="token comment">//封装catalog3Vo</span> Catalog2Vo<span class="token punctuation">.</span>Catalog3Vo catalog3Vo <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Catalog2Vo<span class="token punctuation">.</span>Catalog3Vo</span><span class="token punctuation">(</span>level2<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> level3<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> level3<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> catalog3Vo<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">collect</span><span class="token punctuation">(</span>Collectors<span class="token punctuation">.</span><span class="token function">toList</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//封装catalog3Vo到catalog2Vo</span> catalog2Vo<span class="token punctuation">.</span><span class="token function">setCatalog3List</span><span class="token punctuation">(</span>catalog3List<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> catalog2Vo<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">collect</span><span class="token punctuation">(</span>Collectors<span class="token punctuation">.</span><span class="token function">toList</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">//返回v=catalog2Vo</span> <span class="token keyword">return</span> catelog2Vos<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> map<span class="token punctuation">;</span> <span class="token punctuation">}</span>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
应该第一次查询出来所有,后面拿查询出来的去操作
优化后:
/** * 根据传进分类筛选出对应级别 * * @param list * @param parent_cid * @return */ public List<CategoryEntity> getCategorys(List<CategoryEntity> list, Long parent_cid) {List<span class="token generics function"><span class="token punctuation"><</span>CategoryEntity<span class="token punctuation">></span></span> collect <span class="token operator">=</span> list<span class="token punctuation">.</span><span class="token function">stream</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span>l <span class="token operator">-</span><span class="token operator">></span> parent_cid<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span>l<span class="token punctuation">.</span><span class="token function">getParentCid</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">collect</span><span class="token punctuation">(</span>Collectors<span class="token punctuation">.</span><span class="token function">toList</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> collect<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">/** * 查出所有分类 返回首页json * * @return */</span> <span class="token annotation punctuation">@Override</span> <span class="token keyword">public</span> Map<span class="token operator"><</span>String<span class="token punctuation">,</span> List<span class="token generics function"><span class="token punctuation"><</span>Catalog2Vo<span class="token punctuation">></span></span><span class="token operator">></span> <span class="token function">getCatalogJson</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//查询出所有分类</span> List<span class="token generics function"><span class="token punctuation"><</span>CategoryEntity<span class="token punctuation">></span></span> selectList <span class="token operator">=</span> baseMapper<span class="token punctuation">.</span><span class="token function">selectList</span><span class="token punctuation">(</span>null<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//先查出所有一级分类</span> List<span class="token generics function"><span class="token punctuation"><</span>CategoryEntity<span class="token punctuation">></span></span> level1Categorys <span class="token operator">=</span> <span class="token function">getCategorys</span><span class="token punctuation">(</span>selectList<span class="token punctuation">,</span> <span class="token number">0</span>L<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//封装数据 map k,v 结构</span> Map<span class="token operator"><</span>String<span class="token punctuation">,</span> List<span class="token generics function"><span class="token punctuation"><</span>Catalog2Vo<span class="token punctuation">></span></span><span class="token operator">></span> map <span class="token operator">=</span> level1Categorys<span class="token punctuation">.</span><span class="token function">stream</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">collect</span><span class="token punctuation">(</span>Collectors<span class="token punctuation">.</span><span class="token function">toMap</span><span class="token punctuation">(</span>k <span class="token operator">-</span><span class="token operator">></span> k<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> v <span class="token operator">-</span><span class="token operator">></span> <span class="token punctuation">{</span> <span class="token comment">//每一个的一级分类,查到这个一级分类的二级分类</span> List<span class="token generics function"><span class="token punctuation"><</span>CategoryEntity<span class="token punctuation">></span></span> category2Entities <span class="token operator">=</span> <span class="token function">getCategorys</span><span class="token punctuation">(</span>selectList<span class="token punctuation">,</span> v<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> List<span class="token generics function"><span class="token punctuation"><</span>Catalog2Vo<span class="token punctuation">></span></span> catelog2Vos <span class="token operator">=</span> null<span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>category2Entities <span class="token operator">!=</span> null<span class="token punctuation">)</span> <span class="token punctuation">{</span> catelog2Vos <span class="token operator">=</span> category2Entities<span class="token punctuation">.</span><span class="token function">stream</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>level2 <span class="token operator">-</span><span class="token operator">></span> <span class="token punctuation">{</span> <span class="token comment">//封装catalog2Vo</span> Catalog2Vo catalog2Vo <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Catalog2Vo</span><span class="token punctuation">(</span>v<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> null<span class="token punctuation">,</span> level2<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> level2<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//每一个二级分类,查到三级分类</span> List<span class="token generics function"><span class="token punctuation"><</span>CategoryEntity<span class="token punctuation">></span></span> category3Entities <span class="token operator">=</span> <span class="token function">getCategorys</span><span class="token punctuation">(</span>selectList<span class="token punctuation">,</span> level2<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>category3Entities <span class="token operator">!=</span> null<span class="token punctuation">)</span> <span class="token punctuation">{</span> List<span class="token generics function"><span class="token punctuation"><</span>Object<span class="token punctuation">></span></span> catalog3List <span class="token operator">=</span> category3Entities<span class="token punctuation">.</span><span class="token function">stream</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>level3 <span class="token operator">-</span><span class="token operator">></span> <span class="token punctuation">{</span> <span class="token comment">//封装catalog3Vo</span> Catalog2Vo<span class="token punctuation">.</span>Catalog3Vo catalog3Vo <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Catalog2Vo<span class="token punctuation">.</span>Catalog3Vo</span><span class="token punctuation">(</span>level2<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> level3<span class="token punctuation">.</span><span class="token function">getCatId</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> level3<span class="token punctuation">.</span><span class="token function">getName</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> catalog3Vo<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">collect</span><span class="token punctuation">(</span>Collectors<span class="token punctuation">.</span><span class="token function">toList</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//封装catalog3Vo到catalog2Vo</span> catalog2Vo<span class="token punctuation">.</span><span class="token function">setCatalog3List</span><span class="token punctuation">(</span>catalog3List<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> catalog2Vo<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">collect</span><span class="token punctuation">(</span>Collectors<span class="token punctuation">.</span><span class="token function">toList</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">//返回v=catalog2Vo</span> <span class="token keyword">return</span> catelog2Vos<span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> map<span class="token punctuation">;</span> <span class="token punctuation">}</span>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
</div>
本文深入探讨了压力测试的重要性,介绍了关键性能指标如响应时间、吞吐量等,并详细讲解了如何使用JMeter进行压力测试。同时,文章提供了优化中间件如Nginx和网关的策略,以及通过代码优化提升系统性能的具体案例。
2368

被折叠的 条评论
为什么被折叠?



