【41-系统性能压力测试优化-JVM知识回顾-jconsole和jvisualvm-jvisualvm安装Visual GC插件-Nginx压力测试- 网关gateway压测-Nginx实现动静分离】

一.知识回顾

【0.三高商城系统的专题专栏都帮你整理好了,请点击这里!】
【1-系统架构演进过程】
【2-微服务系统架构需求】
【3-高性能、高并发、高可用的三高商城系统项目介绍】
【4-Linux云服务器上安装Docker】
【5-Docker安装部署MySQL和Redis服务】
【6-Git安装与配置过程、Gitee码云上创建项目、IDEA关联克隆的项目】
【7-创建商城系统的子模块并将修改后的信息使用Git提交到Gitee上】
【8-数据库表结构的创建&后台管理系统的搭建】
【9-前端项目的搭建部署、Node安装、VSCode安装】
【10-Node的安装以及全局环境变量的相关配置&解决启动报错的问题(1.Error: Cannot find module ‘fs/promises)(2.npm安装node-sass报错)】
【11-导入人人generator项目并自动生成相关的文件&商品子模块的调试&公共模块common子模块的抽离与实现&Lombok插件的安装】
【12-商品子模块整合MyBatisPlus技术&其它模块通过generator的自动生成与补充完善】
【13-项目中微服务组件的学习-SpringCloudAlibaba微服务生态体系的学习&SpringCloudAlibaba的依赖管理&项目中SpringBoot和SpringCloud版本的统一】
【14-微服务的注册中心与配置中心Nacos&Windows操作系统上安装Nacos和Linux操作系统上用Docker中安装Nacos&每个子项目模块使用Nacos进行服务注册与发现】
【15-项目中服务的远程调用之OpenFeign&订单模块与商品模块集成使用OpenFeign的案例】
【16-配置中心之Nacos的基本使用&Nacos服务之命令空间、Nacos服务之配置组、Nacos服务之配置拆分】
【17-微服务网关之Spring Cloud Gateway&Spring Cloud Gateway网关服务搭建】
【18-业务开发-基础业务-商品模块-分类管理-前后端管理系统的启动-为分类管理表增加数据-Json插件的下载-返回具有层级目录、父子关系结构的数据】
【19-业务开发-基础业务-商品模块-分类管理-管理系统新建菜单-后端项目renren注册到Nacos注册中心和配置中心去-项目gateway网关模块的搭建-浏览器的同源策略与解决跨域问题实操案例】
【20-业务开发-基础业务-商品模块-分类管理-前端展示后端具有层级关系的目录数据-商品系统三级分类的逻辑删除前后端代码实现】
【21-业务开发-基础业务-商品模块-分类管理-商品系统三级分类的新增类别前后端代码实现-商品系统三级分类的更新类别前后端代码实现-之前错误的Bug修正】
【22-业务开发-基础业务-商品模块-分类管理-商品系统三级分类拖拽页面的功能-前后端代码的逻辑实现-访问测试-拖拽开关的开启和关系-批量更新拖拽数据-批量删除选定数据】
【23-业务开发-基础业务-品牌管理-品牌管理项目搭建-品牌管理实现的增删改查操作测试-后端数据显示状态使用前端组件开关按钮展示-以及数据处理以及测试】
【24-业务开发-基础业务-品牌管理-图片管理-阿里云OSS服务开通和使用-阿里云OSS服务API使用-SpringCloudAlibaba OSS服务的使用】
【25-业务开发-基础业务-品牌管理-图片管理-图片上传方式的三种实现方式-第三方公共服务模块集成到项目中-服务端生成签名实战】
【26-业务开发-基础业务-品牌管理-图片管理-上传图片功能实现-基于阿里云OSS服务-解决跨域问题-设置跨域规则-修改ACL权限为公共读】
【27-业务开发-基础业务-品牌管理-图片管理-添加修改品牌信息并显示图片-前端数据校验-后端数据JSR303校验实现-统一异常处理-自定义响应编码规则-分组校验-自定义校验注解-项目Bug解决】
【28-业务开发-基础业务-属性管理-SKU和SPU基本概念-SKU和SPU关联关系-属性实体之间的关联关系-批量菜单创建】
【29-业务开发-基础业务-属性管理-属性组业务逻辑开发-页面布局-三级分类组件功能-属性组表单-父子组件传值-属性组数据展示-属性组数据添加-属性组数据修改-前后端项目整合交互测试】
【30-业务开发-基础业务-品牌管理-分类维护-解决分类维护业务开发中的一个Bug-品牌管理-分页插件-分页功能的逻辑实现-品牌管理-检索条件模糊查询品牌管理-增加更新操作中排序字段检验还是存在问题】
【31-业务开发-基础业务-品牌管理-级联类别信息业务功能实现-品牌管理和商品分类管理俩者业务关联出现数据冗余,导致数据不同步的问题-开启事务-项目测试】
【32-业务开发-基础业务-规格参数-保存数据-查询数据-更新操作之数据回显展示-更新操作-前后端项目交互整合与测试-总结收获】
【33-业务开发-基础业务-规格参数-销售属性-多表之间的关联增删改查操作-前后端项目交互整合与测试-Cannot read property ‘publish‘ of undefined】
【34-业务开发-基础业务-属性组和基本属性-属性组和基本属性建立关联-属性组和基本属性解除关联-未关联属性查询-确认新增】
【35-业务开发-基础业务-商品服务-新增商品-会员模块服务-mall-member-会员模块数据维护-规格参数维护-前端项目Bug解决-PubSub依赖缺失】
【36-业务开发-基础业务-商品服务SPU-前后端处理商品数据Json-发布商品前后端业务逻辑-feign服务远程调用-DTO数据传输对象-商品服务的检索-商品管理的检索项目中修改更正完善逻辑操作】
【37-业务开发-基础业务-库存管理- 仓库模块Nacos注册中心的配置-Gateway网关配置-仓库维护的增删改查-商品库存管理-采购流程-采购需求维护-采购需求合并-领取采购单完成采购操作】
【插入------>ElasticSearch专栏相关的知识内容都整理好了,在这里哟!】
【38-商品上架功能结合ElasticSearch全文检索的流程-商品ES关系映射模型&Docker安装ik分词器-实现上架功能复杂的逻辑实现-Postman+Kibana访问测试】
【39-商品整合thymeleaf模板引擎-商城用户端的实现逻辑-部署devtools工具依赖-商品后台-三级分类逻辑分析实现-Docker 安装部署Nginx-Nginx对网关实现反向代理负载均衡】
【40-系统性能压力测试基本概念-相关性能指标HPS&TPS&QPS&RT-安装Jmeter教程-JMeter测试流程-线程组-取样器-监视器-测试商城首页-JMeter Address 占用的问题】

二.性能优化

2.1考虑影响服务性能的因素

数据库、应用程序,中间件(Tomcat,Nginx),网络和操作系统等

我们还得考虑当前的服务属于

  • CPU密集型:计算比较影响性能—>添加CPU,加机器
  • IO密集型:网络IO,磁盘IO,数据库读写IO,Redis读写IO --》缓存,加固态硬盘,添加网卡

2.2 JVM相关知识的回顾

JVM的内存结构

image.png

JVM中对象的存储和GC

image.png

image.png

三.jconsole和jvisualvm

  jconsole和jvisualvm是JDK自带监控工具。可以帮助我们更好的查看服务的相关监控信息,jvisualvm功能会更加的强大些。

3.1 jconsole

搜索jconsole运行命令
在这里插入图片描述
进入jconsole的界面
在这里插入图片描述
找到需要监控的进程,进入界面

在这里插入图片描述

进入对应的进程
界面概览
在这里插入图片描述
堆内存信息
在这里插入图片描述
线程详细信息
在这里插入图片描述

类的详细信息
在这里插入图片描述

3.2 jvisualvm

因为是jdk6.0后自带的,我们同样的可以在cmd或者搜索框中找到

在这里插入图片描述

进入主页面

在这里插入图片描述

找到对应的进程,双击进入

在这里插入图片描述

查看对应的监视信息

在这里插入图片描述

添加Visual GC插件。

在这里插入图片描述

如果下载插件提示如下的错误,需要更新下载地址
在这里插入图片描述

先查看Java版本
在这里插入图片描述
进入到Visualvm官方网站,进入plugins中
在这里插入图片描述
进入插件中心
在这里插入图片描述

找到与自己JDK对应的下载地址
VisualVM官方网站
在这里插入图片描述

点击设置,更新插件中心地址
在这里插入图片描述

重新安装我们的Visual GC插件。—》安装成功
在这里插入图片描述

安装成功
在这里插入图片描述

安装好之后重启jvisualvm,进入监控界面,可以看到我们安装的插件在这里插入图片描述

四. 各个请求链路节点中的压力测试

  以下是一个完整的请求链路

image.png

4.1 Nginx压力测试

压力测试内容压力测试的线程数吞吐量/s90%响应时间99%响应时间
Nginx1005,184.433396

在这里插入图片描述

4.2 网关gateway压测

压力测试内容压力测试的线程数吞吐量/s90%响应时间99%响应时间
Gateway10020,176.133814

在这里插入图片描述

4.3 单独模块服务测试

压力测试内容压力测试的线程数吞吐量/s90%响应时间99%响应时间
单独测试服务10028,208.97759

编写测试接口
在这里插入图片描述
先简单的访问测试一下
在这里插入图片描述
然后再使用jmeter进行测试
在这里插入图片描述

数据展示
在这里插入图片描述

4.4 Gateway网关和服务模块

压力测试内容压力测试的线程数吞吐量/s90%响应时间99%响应时间
Gateway+服务1009,360.1282258

网关模块配置请求接口的断言,重启项目
在这里插入图片描述
先测试一下通过网关访问服务接口
在这里插入图片描述

jmeter测试
在这里插入图片描述

结果数据展示:
在这里插入图片描述

4.5 Nginx+Gateway+服务

压力测试内容压力测试的线程数吞吐量/s90%响应时间99%响应时间
Nginx+Gateway+服务1002,437.7364961

先简单访问一下是否可行
在这里插入图片描述
修改jmeter访问参数
在这里插入图片描述

压测效果:

在这里插入图片描述

4.6 业务逻辑-一级菜单压测

压力测试内容压力测试的线程数吞吐量/s90%响应时间99%响应时间
一级菜单100199.876532542

设置jmeter测试参数
在这里插入图片描述

压测后数据展示
在这里插入图片描述

4.7 业务逻辑-三级菜单压测

压力测试内容压力测试的线程数吞吐量/s90%响应时间99%响应时间
三级菜单10010.56214,55621,744

设置jmeter测试参数
在这里插入图片描述

压测后数据展示
在这里插入图片描述

补充一下:如果还想要测试获取前端页面的情况,可以在jmeter中怎么设置并测试。
在这里插入图片描述

4.8 总结上面各压力测试性能比较

压力测试内容压力测试的线程数吞吐量/s90%响应时间99%响应时间
Nginx1005,184.433396
Gateway10020,176.133814
单独测试服务10028,208.97759
Gateway+服务1009,360.1282258
Nginx+Gateway+服务1002,437.7364961
一级菜单100199.876532542
三级菜单10010.56214,55621,744

4.9 优化改进思路

中间件越多,性能损失就越大,大多数的损失都是在数据的交互

简单的优化:

中间件:单个的效率都很高,串联的中间件越多,影响越大,但是在业务面前其实就比较微弱

业务:
添加索引:
在这里插入图片描述

  • DB
  • 模板页面渲染
压力测试内容压力测试的线程数吞吐量/s90%响应时间99%响应时间
Nginx1005,184.433396
Gateway10020,176.133814
单独测试服务10028,208.97759
Gateway+服务1009,360.1282258
Nginx+Gateway+服务1002,437.7364961
一级菜单100199.876532542
三级菜单10010.56214,55621,744
一级菜单(DB-索引)100622635
三级分类压测(索引)10041074516424
首页全量数据(DB-Themleaf-放开缓存)10015崩盘崩盘

五.Nginx实现动静分离

  通过上面的压力测试我们可以发现如果后端服务及处理动态请求又处理静态请求那么他的吞吐量是非常有限的,这时我们可以把静态资源存储在Nginx中。

在这里插入图片描述

5.1 静态资源存储

进入nginx挂载目录下的html目录下,新建一个文件,static,然后将压缩好的静态文件上传到该路径下。
在这里插入图片描述
上传静态资源
在这里插入图片描述
在这里插入图片描述

  解压静态资源文件

unzip index.zip

在这里插入图片描述

删除idea下的index目录
在这里插入图片描述

然后修改模板文件中的资源访问路径

在这里插入图片描述
启动访问测试一下
在这里插入图片描述

5.2 Nginx配置

  在Nginx的配置文件中指定static开头的请求的处理方式,保存后重启Nginx服务,然后就可以访问了
在这里插入图片描述

再次访问页面,成功
在这里插入图片描述

好了,关于【41-系统性能压力测试优化-JVM知识回顾-jconsole和jvisualvm-jvisualvm安装Visual GC插件-Nginx压力测试- 网关gateway压测-Nginx实现动静分离】就先学习到这里,更多的内容持续创作学习中,敬请期待。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值