文章目录
-
- 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
重启计算机
jconsole
在cmd窗口直接输入jconsole
在本地链接中选中服务双击打开
jvisualvm
jvisualvm的作用:
监控内存泄漏,跟踪垃圾回收,执行时内存,cpu分析,线程分析
运行:正在运行的
休眠: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 |
docker stats命令查看
单压nginx
get请求,192.168.205.128 端口80 路径:/
发现nginx的cpu占用比较高
单压网关
localhost:88 路径:/
网关比较浪费cpu
测试简单服务
访问product模块中的indexController
@ResponseBody
@GetMapping("/hello")
public String hello(){
return "hello";
}
开始压测,填入数据
测试网关+简单服务
修改网关的配置文件,在路由断言加上/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
访问地址:localhost
路径:/
端口:10001
总结:
中间件越多,性能损失越大,大多都损失在网络交互了
业务:
Db
模板的渲染速度
静态资源
优化:关闭日志,给数据库添加索引,打开thymeleaf的缓存