谷粒商城9——【压力测试】 性能指标 性能监控 JMeter jconsole监控 jvisualvm监控 中间件性能测试 优化-nginx动静分离

三、压力测试

jvm初步学习:《深入理解Java虚拟机》1 —— 第二章 Java内存区域与内存溢出异常_HotRabbit.的博客-CSDN博客

压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。压测都 是为了系统在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数。

使用压力测试,我们有希望找到很多种用其他测试方法更难发现的错误。有两种错误类型是: 内存泄漏,并发与同步。

有效的压力测试系统将应用以下这些关键条件:重复,并发,量级,随机变化。

1.性能指标

  •  响应时间(Response Time: RT) 响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响 应结束,整个过程所耗费的时间。  HPS(Hits Per Second) :每秒点击次数,单位是次/秒。
  •  TPS(Transaction per Second):系统每秒处理交易数,单位是笔/秒。
  •  QPS(Query per Second):系统每秒处理查询次数,单位是次/秒。 对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS=QPS=HPS,一 般情况下用 TPS 来衡量整个业务流程,用 QPS 来衡量接口查询次数,用 HPS 来表 示对服务器单击请求。
  •  无论 TPS、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好,根据经 验,一般情况下:
    • 金融行业:1000TPS~50000TPS,不包括互联网化的活动
    • 保险行业:100TPS~100000TPS,不包括互联网化的活动
    • 制造行业:10TPS~5000TPS
    • 互联网电子商务:10000TPS~1000000TPS
    • 互联网中型网站:1000TPS~50000TPS
    • 互联网小型网站:500TPS~10000TPS
  •  最大响应时间(Max Response Time) 指用户发出请求或者指令到系统做出反应(响应) 的最大时间。
  •  最少响应时间(Mininum ResponseTime) 指用户发出请求或者指令到系统做出反应(响 应)的最少时间。
  •  90%响应时间(90% Response Time) 是指所有用户的响应时间进行排序,第 90%的响 应时间。
  •  从外部看,性能测试主要关注如下三个指标
    • 吞吐量:每秒钟系统能够处理的请求数、任务数。
    • 响应时间:服务处理一个请求或一个任务的耗时。
    • 错误率:一批请求中结果出错的请求所占比例

2.性能监控

jvm 调优:

  • 调的是稳定,并不能带给你性能的大幅提升。服务稳定的重要性就不用多说了,
  • 保证服务的稳定,gc 永远会是 Java 程序员需要考虑的不稳定因素之一。复杂和高并发下的 服务,必须保证每次 gc 不会出现性能下降,各种性能指标不会出现波动,gc 回收规律而且 干净,找到合适的 jvm 设置。
  • Full gc 最会影响性能,根据代码问题,避免 full gc 频率。可以 适当调大年轻代容量,让大对象可以在年轻代触发 yong gc,调整大对象在年轻代的回收频 次,尽可能保证大对象在年轻代回收,减小老年代缩短回收时间;

常用工具:

image-20220720144431143

命令示例:

image-20220720144537408

image-20220720144556043

3.JMeter

按照JMeter压力测试Apache JMeter - Download Apache JMeter

运行 bin/jmeter.bat 即可

image-20220720142720567

image-20220720142741208

image-20220720142749695

image-20220720142839172

4.jconsole监控

jvisualvm是jconsole的升级版。建议使用jvisualvm。第五小节是jvisualvm的使用方法

通过cmd启动

image-20220720144946878

image-20220720145056176

image-20220720145159532

image-20220720145321071

5.jvisualvm监控

cmd启动

image-20220720145523742

image-20220720145603253

image-20220720145620985

image-20220720145718483

6.中间件性能测试

docker stats 查看内存使用率

image-20220720150637907

测试nginx 访问80端口

image-20220720150459388

image-20220720150516573

由于nginx需要多线程调用其他服务,而不需要创建什么对象,所以使用的cpu较多

image-20220720151643023

测试结果:

image-20220720153831813

分析:

  • 中间件越多,性能损失越大,大多都损失在网络交互了;
  • 业务:
    • Db(MySQL 优化索引)
    • 模板的渲染速度(缓存)
    • 静态资源(占用tomcat的资源)
    • JVM的垃圾回收(老年代回收、新生代回收)

7.优化-nginx动静分离

为了避免静态资源的请求占用tomcat线程(静态资源放在tomcat中),可以将静态资源(css、js、图片等)直接放到nginx中。

指定路径/static/**所有请求都由nginx直接返回

image-20220720154146283

  1. 在mydata/nginx/html下新建文件夹static,经静态资源文件index放进去
  2. 修改项目中的html页面,加上static/
  3. 修改nginx配置,在conf.d新建该项目的分配置文件guli-shop.conf,添加静态资源处理请求

image-20220720155737605

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HotRabbit.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值