文章目录

    • JMeter Address Already in use 错误解决
    • jconsole
    • jvisualvm
    • JVM分析&调优
      • 单压nginx
      • 单压网关
      • 测试简单服务
      • 测试网关+简单服务
      • 测试全链路
      • 单压首页一级菜单渲染
      • 单压三级分类数据
      • 单压首页全量数据获取

1、性能指标

响应时间

响应时间指用户从客户端发起一个请求开始,到客户端接受到从服务器返回的响应结束,整个过程所耗费的时间

HPS:每秒点击次数,单位是次/秒

TPS:系统每秒处理交易数,单位是笔/秒

QPS:系统每秒处理查询数,单位是次/秒

对于互联网业务中,如果某些业务有且仅有一个请求连接,那么TPS=QPS=HPS,

一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器单击请求

金融行业:1000TPS-50000TPS

保险行业:100TPS-100000TPS

制造行业:10TPS-5000TPS

互联网电子商务10000TPS-1000000TPS

互联网小型网站:500TPS-10000TPS

互联网中型网站:500TPS-10000TPS

最大响应时间:指用户发出请求或者指令到系统做出的反应的最大时间

最小响应时间指用户发出请求或者指令到系统做出的反应的最小时间

90%响应时间:是指所有的用户的响应时间,第90%的响应时间

从外部看,性能测试主要关注如下三个指标

吞吐量:每秒钟系统能够处理的请求数,任务数

响应时间:服务处理一个请求或一个任务的耗时

错误率:一批请求中结果出错的请求所占的比例

JMeter Address Already in use 错误解决

windows本身提供的端口访问机制的问题.

windows提供给TCP/IP链接的端口为1024-5000并且要四分钟来循环回收他们,就导致我们在短时间内跑大量请求时,将端口占满了

win+r打开regedit注册表

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下

右击新建一个DWORD名WieMAxUserPort

谷粒商城-高级篇-Day14-压力测试

谷粒商城-高级篇-Day14-压力测试

重启计算机

jconsole

在cmd窗口直接输入jconsole

在本地链接中选中服务双击打开
谷粒商城-高级篇-Day14-压力测试

jvisualvm

谷粒商城-高级篇-Day14-压力测试

jvisualvm的作用:

监控内存泄漏,跟踪垃圾回收,执行时内存,cpu分析,线程分析
谷粒商城-高级篇-Day14-压力测试

运行:正在运行的

休眠:sleep

等待:wait

驻留:线程池里面的空闲线程|
监视:阻塞的线程,正在等待锁

JVM分析&调优

压测内容 压测线程数 吞吐量/sec 90%响应时间 99%响应时间
Nginx 50 7,202 10 18
Gateway 50 14,470 5 14
简单服务 50 22,115 4 10
首页一级菜单渲染 50 574(db,thymeleaf) 124 286
三级分类数据获取 50 6(db) 7,332 7879
首页全量数据获取 50 10(静态资源)
Nginx+Gateway 50
Gateway+简单服务 50 6,051 16 38
全链路 50 193 1,008 3023

谷粒商城-高级篇-Day14-压力测试

docker stats命令查看

谷粒商城-高级篇-Day14-压力测试

单压nginx

get请求,192.168.205.128 端口80 路径:/

发现nginx的cpu占用比较高

谷粒商城-高级篇-Day14-压力测试

单压网关

localhost:88 路径:/
谷粒商城-高级篇-Day14-压力测试

网关比较浪费cpu

测试简单服务

访问product模块中的indexController

@ResponseBody
@GetMapping("/hello")
public String hello(){
    return "hello";
}

谷粒商城-高级篇-Day14-压力测试

开始压测,填入数据

测试网关+简单服务

修改网关的配置文件,在路由断言加上/hello

- id: product
  uri: lb://gulimall-product
  predicates:
    - Path=/api/product/**,/hello

访问http://localhost:88/hello也能返回hello

开始压测,填入数据

中间件越多,性能损失越大,大多都损失在网络交互了

测试全链路

访问地址:gulimall.com/hello

端口:80

开始测试,填入数据

单压首页一级菜单渲染

访问地址:localhost/

端口:10001

单压三级分类数据

访问地址:/localhost:10001/index/catalog.json

开始测试,填入数据

单压首页全量数据获取

限制并行下载数量为6

谷粒商城-高级篇-Day14-压力测试

访问地址:localhost

路径:/

端口:10001

总结:

中间件越多,性能损失越大,大多都损失在网络交互了

业务:

​ Db

​ 模板的渲染速度

​ 静态资源

优化:关闭日志,给数据库添加索引,打开thymeleaf的缓存

发表回复