jmeter性能测试实例3解析--性能瓶颈分析过程

  • 场景要求

1、用户登陆---每个用户登陆一次(仅一次控制器)

2、压测试接口获取门店列表

  • 性能场景指标

1、验证最大在线用户数--(负载测试)

2、错误率<0.5%

3、请求响应时间<2S

4、场景运行时间10分钟--不需要 同步定时器

5、服务器资源使用合理(cpu使用率<80%,内存使用率<80%)

  • 脚本设计如下:

 

 

  • 运行结果及分析流程

1、运行场景--聚合报告(重要指标:响应时间、错误率、吞吐量)99%用户登陆响应时间超过2S,未达标

 

 

 2、top命令查看服务器资源,看具体监控数据:发现cpu过高,哪个进程占cpu?

cpu包含:sys系统、usr用户、idle空余、io%输入输出 

(top命令)第一个红框是百分比,第二个红框是总共,例如若8核cpu服务器下面红框内最高可达800%
load average:cpu分别在1/5/15分钟内的平均负载值。若8核这里达到可以短暂的超过8没问题,但不要持续时间过长



 发现,usr用户进程使用率高,是哪个进程导致这样高的cpu使用率

3.1、若是mysql高,原因:第一可能是库、表设计不合理;第二可能索引问题;第三可能死锁、大表、慢查询问题

-- 查询慢查询次数
show status LIKE 'slow_queries';
-- 查询主从延时时间
show slave STATUS
-- 查看慢查询日志是否打开
show variables LIKE 'slow_query_log';
-- 查看慢查询日志的路径 /var/log/mysql/slow.log
show variables LIKE '%slow_query_log%';
-- 查看慢查询阈值,value单位为秒
show variables LIKE 'long_query_time';
-- 慢查询记录表
SELECT * from mysql.slow_log
-- 设置慢查询时间
setlong_query_time=2;
-- 使用explain来分析sql语句实现优化  主要关注type、key、rows两列
EXPLAIN 具体sql语句;

优化前:EXPLAIN 具体sql   如下图, 主要关注type、key、rows几列,key未设置主键,rows扫描记录数过多

优化(加主键)后:EXPLAIN 具体sql   如下图,rows=1 性能会大大提升

 

3.2、若是java root 进程比较高

 

 查看该进程79478对应的线程,此时用命令“top -H -p 进程号PID”来查看具体哪个服务高;top -H -p 79478   结果如下:

 

 

 (注:java进程里容易出现的性能问题:线程死锁、堆内存溢出(具体哪个对象)、GC年轻态 还是 年老态、jar包问题)

3.3、若是redis(缓存服务器)问题

3.3、若是nginx问题,权重设计是否到位

3.3、若是tomcat问题

3.3、若是mq问题

  • 分析流程总结:

现象:Jmeter请求响应时间长

1、服务器资源使用情况:top

2、哪个进程占用资源高(mysql):top -H -p PID

3、阿里云服务器性能监控(数据库)分析:得知慢sql

4、查看关键指标:EXPLAIN

5、打开相应日志

 

posted @ 2023-03-08 15:34  LCX测试小姐姐  阅读(1222)  评论(0编辑  收藏  举报