电商项目——性能压测——第四章——中篇

本文详细介绍了电商项目的压力测试过程,包括使用Apache JMeter进行压力测试的基本操作、性能监控、中间件对性能的影响及优化策略。通过实例展示了JMeter在Windows下的使用,分析了中间件如nginx如何影响性能,并提出了动静分离的解决方案以提高系统吞吐量。
摘要由CSDN通过智能技术生成

电商项目——全文检索-ElasticSearch——第一章——中篇
电商项目——商城业务-商品上架——第二章——中篇
电商项目——商城业务-首页——第三章——中篇
电商项目——性能压测——第四章——中篇
电商项目——缓存——第五章——中篇
电商项目——商城业务-检索服务——第六章——中篇
电商项目——商城业务-异步——第七章——中篇
电商项目——商品详情——第八章——中篇
电商项目——认证服务——第九章——中篇
电商项目——购物车——第十章——中篇
电商项目——消息队列——第十一章——中篇
电商项目——订单服务——第十二章——中篇
电商项目——分布式事务——第十三章——中篇

1:压力测试

1.1 基本介绍

在分布式开发中,我们都将微服务拆分成一个个独立的模块,每一个微服务模块在上线之前,或者之后,都要对他进行压力测试。压力测试就是为了寻找在我们当前的软硬件环境下,最大的负荷量和系统瓶颈,知道了这个系统瓶颈,我们就可以通过负载均衡的配置,避免在单位时间之内给系统发送太多的请求,导致这个系统被压垮,导致不可用。

在这里插入图片描述
压力测试做到我们当前系统有一个衡量的指标,它可以承受多大的压力,如果我们要求编写一个高并发的接口,如果我们压力测试,性能没有达到要求,我们还可以参照压力测试的性能指标,来分析接口的问题在哪,去优化我们的接口,如下是我们需要掌握的性能指标
在这里插入图片描述
在这里插入图片描述
吞吐量大了,说明我们支持高并发;
响应时间小了,说明我们接口性能好;

1.2 Apache JMeter安装使用

第一步:下载Jmterzip包,然后压缩,点击.bat命令即可
http://jmeter.apache.org/download_jmeter.cgi
在这里插入图片描述

第二步:创建测试计划
右击TestPlan,添加,线程,线程用户组
选中线程组,200,10,100代表10秒内完成200个线程请求,然后一个线程循环100次
然后点击线程组,右键,取样器,hhtp请求,会创建一个http请求(http,www.baidu.com 80),然后进行压力测试
想要看测试指标,除了添加取样器,我们要看测试结果,我们要添加监听器(比如,查看结果数,汇总报告——》每一列都很重要)聚合报告,汇总图)
我们的监听器帮都用上面我讲的那几个
点击运行,进行保存,查看监听器
用完必须点击清除数据
在这里插入图片描述

在这里插入图片描述
我们上面测试的是百度,接下来我们测试自己写的mall.com

1s=1000ms,底下的值都是以ms为单位

在这里插入图片描述

在这里插入图片描述
根据上面的结果,可以知道我的接口非常需要优化,异常80%

如果我们直接访问主机ip地址+端口发现,效果会比直接访问mall.com好
在这里插入图片描述
原因:中间件都是影响性能的原因,我们直接访问ip地址+端口不需要中间件,如果访问mall.com要经过nginx等中间件
在这里插入图片描述
如上就是我们一个简单的测试和简单的调优,真正的接口优化牵扯到的方面也很多,下面我们一一道来

1.3 JMeter在windows下地址占用bug解决

在这里插入图片描述

2:性能监控

2.1 堆内存与垃圾回收

参考文章
深入理解Java虚拟机——Java虚拟机介绍——第一章

2.2 jvisualvm使用

在这里插入图片描述
推荐使用 jvisualvm
在这里插入图片描述

3:优化

3.1 中间控件对性能的影响

我们接下来对如下的两个接口进行性能优化,在优化之前,我们要考虑两个问题
在这里插入图片描述
我们在发送mall.com请求的一开始,比需要先经过nginx的中间件,在转交给后台服务集群的网关gateway中间件,在把请求转交给后台服务集群(商品,订单服务等),等服务集群处理完成后再返回给网关,nginx,最后在返回给前端页面。我们在真正的功能执行前经过了两个中间件,那么它对我们有没有影响呢?我们进行如下测试
使用如下命令查看docker容器中的内存信息

docker stats

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
714cbb2558f9        mysql               0.11%               217.3MiB / 3.701GiB   5.73%               25.8MB / 77MB       27.8MB / 1.26GB     40
1b1d0be002c3        kibana              0.00%               357.5MiB / 3.701GiB   9.44%               8.06MB / 5.49MB     9.23MB / 12.3kB     22
2ed108071a4c        nginx 
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值