loadrunner+nmon 定位性能问题
目录:
- nmon使用
- nmon定位问题以及输出监控的数据
接口性能测试的过程步骤如下:
1
调试好loadrunner的脚本
2
在数据库里面准备好10万以上的数据,有些接口的要求是百万的
打开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秒开始
3
设计好场景,比如刚开始并发30个用户,每隔5秒增加2个用户
场景执行时间30分钟
停止脚本,一下子全部都停止
在场景里面,主要来关注tps和响应时间
设定loadrunner日志输出的地方
4
运行场景
点击数字连接信息,可以显示实时的TPS信息
在场景里面可以看到如下的数据,响应时间直线上升到1秒以上,TPS只有30不到
这个时候可以来排除是不是网络有延时,在loadrunner所在的机器pnig 服务器
可以看到响应时间很快,没有看到超时或者丢包,这个时候,也可以排除了网络瓶颈
5
查看服务器资源使用情况
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
输出如下信息:
命令说明
c: 提供关于物理CPU使用的详细信息
m: 提供内存使用的详细信息:系统(内核)和进程,活动虚拟内存
d: 提供关于磁盘,磁盘类型大小,可用空间,卷组,适配器等更详细 的信息
t: 当前进程详细情
P: Paging space 使用情况
k: 显示内核信息
- Nmon 结果保存为文件
3、在当前界面输入:c,可以看到User%已经占用95%以上了
4、再输入:t,看哪个进程占用CPU比较高,可以看到是mysql进程
这里已经定位到问题了,那么下一步怎么办呢?
一般mysql占用CPU高,都是慢查询导致的,那么需要进入到慢查询日志里面去看日志信息
5、动态输出慢日志的信息,在日志里面找到一个“Query_time”,只要超过1秒以上就可以了
6、在MySQL的连接客户端里面查看该sql语句的执行计划,从select开始整个sql语句
可以看到type=ALL,是全表扫描,没有建立索引导致的
6
nmon后台运行
参数说明:
-f:按标准格式输出文件:_YYYYMMDD_HHMM.nmon
-m: 切换到路径去保存日志文件
-s: 每隔n秒抽样一次,这里为20
-c 取出多少个抽样数量,这里为30,即监控=20*30/60=10分钟
7
下载到本地,进行打开,查看性能监控结果
[root@pertest0 nmon]# sz pertest0_200528_2302.nmon
在nmon analyser v60.xlsm文件,点击Analyse nomn data按钮,选择下载下 来的结果文件
当有提示需要启用宏时,需要点击启用
选择文件
点击保存按钮
查看CPU相关的数据