loadrunner+nmon 定位性能问题

本贴最后更新于 1611 天前,其中的信息可能已经物是人非

目录:

    loadrunner里面设定好登录的接口
  
    nmon使用
    
    nmon定位问题以及输出监控的数据

接口性能测试的过程步骤如下:

一、调试好loadrunner的脚本

image.png

二、在数据库里面准备好10万以上的数据,有些接口的要求是百万的

image.png

打开MySQL的慢日志开关,在MySQL的配置文件my.cnf里面配置

[mysqld]

slow_query_log=1 # 打开慢查询

slow_query_log_file=/data/mysql/mysqllog/logfile/slow-query.log #慢查询的日志保存路径

long_query_time=0.3 # 慢查询的时间,可以设置1秒开始

三、设计好场景,比如刚开始并发30个用户,每隔5秒增加2个用户

image.png

场景执行时间30分钟

image.png

停止脚本,一下子全部都停止

image.png

在场景里面,主要来关注tps和响应时间

image.png

设定loadrunner日志输出的地方

image.png

image.png

四、运行场景

image.png

点击数字连接信息,可以显示实时的TPS信息

image.png

在场景里面可以看到如下的数据,响应时间直线上升到1秒以上,TPS只有30不到

image.png

这个时候可以来排除是不是网络有延时,在loadrunner所在的机器pnig 服务器

image.png

可以看到响应时间很快,没有看到超时或者丢包,这个时候,也可以排除了网络瓶颈

五、查看服务器资源使用情况

1、准备好nmon

①、查看服务器操作系统的版本信息

②、[root@pertest0 data]# cat /etc/redhat-release

CentOS Linux release 7.6.1810 (Core)

③、 root用户登录系统,建立目录:

l[root@localhost data]# mkdir nmon

④、解压文件:[root@localhost data]# tar -zxvf nmon16f_mpginc.tar.gz -C /data/nmon/

l 这里选用nmon_x86_64_centos7

2、运行nmon l 在nmon目录下运行nmon_x86_64_centos7
[root@pertest0 nmon]# ./nmon_x86_64_centos7

输出如下信息:

image.png

命令说明

c: 提供关于物理CPU使用的详细信息

m: 提供内存使用的详细信息:系统(内核)和进程,活动虚拟内存

d: 提供关于磁盘,磁盘类型大小,可用空间,卷组,适配器等更详细 的信息

t: 当前进程详细情

P: Paging space 使用情况

k: 显示内核信息

3、在当前界面输入:c,可以看到User%已经占用95%以上了

image.png

4、再输入:t,看哪个进程占用CPU比较高,可以看到是mysql进程

image.png

这里已经定位到问题了,那么下一步怎么办呢?

一般mysql占用CPU高,都是慢查询导致的,那么需要进入到慢查询日志里面去看日志信息

5、动态输出慢日志的信息,在日志里面找到一个“Query_time”,只要超过1秒以上就可以了

Query_time: 1.629453 Lock_time: 0.000144 Rows_sent: 1 Rows_examined: 150333

SET timestamp=1590677539;
select account0_.id as id1_0_, account0_.age as age2_0_, account0_.createtime as createti3_0_, account0_.email as email4_0_, account0_.gqid as gqid5_0_, account0_.identity as identity6_0_, account0_.lasttime as lasttime7_0_, account0_.mobile as mobile8_0_, account0_.money as money9_0_, account0_.password as passwor10_0_, account0_.pay_pwd as pay11_0_, account0_.platform as platfor12_0_, account0_.pmoney as pmoney13_0_, account0_.sex as sex14_0_, account0_.token as token15_0_, account0_.username as usernam16_0_ from kyj.cb_account account0_ where account0_.mobile='158000260001';

6、在MySQL的连接客户端里面查看该sql语句的执行计划,从select开始整个sql语句

image.png

可以看到type=ALL,是全表扫描,没有建立索引导致的

六、nmon后台运行

[root@pertest0 nmon]# ./nmon_x86_64_centos7 -f -s 5 -c 20

参数说明:

-f:按标准格式输出文件:_YYYYMMDD_HHMM.nmon

-m: 切换到路径去保存日志文件

-s: 每隔n秒抽样一次,这里为20

-c 取出多少个抽样数量,这里为30,即监控=20*30/60=10分钟

输入上面的命令之后,就会在当前目录生成一个文件,比如:pertest0_200528_2302.nmon

七、下载到本地,进行打开,查看性能监控结果

[root@pertest0 nmon]# sz pertest0_200528_2302.nmon

在nmon analyser v60.xlsm文件,点击Analyse nomn data按钮,选择下载下 来的结果文件

image.png

当有提示需要启用宏时,需要点击启用

image.png

选择文件

image.png

点击保存按钮

image.png

查看CPU相关的数据

image.png

image.png

image.png

回帖
请输入回帖内容 ...