测试监控
1 引言
1.1 编写目的
本文档主要目标是规范使用性能测试过程中需监控的各项技术指标,描述各指标项的具体含义,并给出相应的监控工具与方法说明。本文档将作为测试监控的指导性规范,用以选取监控关注指标,使用监控工具。
1.2 适用对象和范围
监控指标及监控工具适用于使用性能测试进行性能测试项目技术质量评价依据。 预期读者为测试管理人员、测试实施人员、技术支持人员、项目质量管理人员、项目管理人员等系统技术质量相关人员。
1.3 参考文档
相关的指标定义及解释可以参照:性能测试指标,本章可能会增加及减少相关指标的描述,并不与性能测试指标中相关指标冲突。
2 业务指标监控
2.1 监控指标
业务指标主要包括并发用户数、响应时间、处理能力,成功率这四个指标,目前大部分压测工具都能将这些指标放在压测工具里面。
2.2 监控工具
2.2.1 性能测试
性能测试分布式压测工具,将相关业务指标集成在平台上。
2.2.2 后台日志
通过后台日志log,采用分析工具也可进行分析得出TPS,响应时间等。
3 操作系统指标监控
3.1 Linux
3.1.1 监控指标说明
| 指标类型 | 指标名称 | 指标描述 |
|---|---|---|
| CPU | CPU utilization | CPU 的使用时间百分比 |
| System mode CPU utilization | 在系统模式下使用 CPU 的时间百分比 | |
| User mode CPU utilization | 在用户模式下使用 CPU 的时间百分比 | |
| Memory | Page-in rate | 每秒钟读入到物理内存中的页数 |
| Page-out rate | 每秒钟写入页面文件和从物理内存中删除的页数 | |
| Paging rate | 每秒钟读入物理内存或写入页面文件的页数 | |
| Disk | Disk rate | 磁盘传输速率 |
3.1.2 监控工具
3.1.2.1 性能测试
性能测试压测工具监控操作系统指标主要有:
CPU%:所有CPU资源利用率
网络流量:每秒入网出网多少Kb
磁盘:每秒读写多少Kb
3.1.2.2 命令
Linux提供丰富的命令进行监控,针对CPU、Memory、I/O等有一些列命令及参数进行监控。具体如下:
top : 整体查看资源情况。
sar :CPU资源消耗
vmstat:内存相关消耗
iostat: 磁盘相关消耗
………
具体用法和参数,可以参照联机帮助(man top等)。
3.1.2.3 Shell
可以将以上命令通过shell来包装,每隔多少秒监控一次,总共监控多少次,将监控结果写到文件里面。
例如:下面shell就是将CPU Load每隔3秒写到文件里面。
while true ; do uptime | awk -F' average: ' '{print $2}' ;sleep 3;done >> `hostname`_`date +%Y%m%d_%H%M`.uptime
3.1.2.4 nmon
Nmon安装 将 nmonXXX.tar.gz 文件复制到计算机。如果使用 FTP,请记住使用二进制模式。
解压该文件,运行 gzip -d nmonXXX.tar.gz
提取该文件,运行tar xvf nmonXXX.tarNmon实时监控 登陆要监控的系统,进入nmon安装目录中
输入命令nmon,运行 nmon(如root用户可能需要输入./nmon).显示的起始屏幕及CPU等信息。
Nmon运行时的键盘命令
| 命令 | 说明 |
|---|---|
| c | 提供关于物理CPU使用的详细信息 |
| m | 提供内存使用的详细信息:系统(内核)和进程,活动虚拟内存 |
| d | 提供关于磁盘,磁盘类型大小,可用空间,卷组,适配器等更详细的信息 |
| t | 当前进程详细情 |
| P | Paging space 使用情况 |
| k | 显示内核信息 |
| + | Nmon 结果保存为文件 |
- Nmon 结果保存为文件 nmon -f -s 60 -c 30(每60s收集一次数据,共收集30次) nmon.sh 赋执行权限:chmod +x nmon.sh 执行nmon.sh 即可运行.
4 数据库指标监控
4.1 MySQL
4.1.1 监控指标说明
主要针对SQL耗时、吞吐量(QPS/TPS)、命中率、锁等待等指标进行监控。
4.1.2 监控工具
4.1.2.1 命令
效率低下SQL
mysqldumpslow -s at -t 20 host-slow.log#mysql qps查询 QPS = Questions(or Queries) / Seconds
mysql -u root -p123456 -e 'SHOW /!50000 GLOBAL/ STATUS LIKE "Questions"'
mysql -u root -p123456 -e 'SHOW /!50000 GLOBAL/ STATUS LIKE "Queries"'#mysql Key Buffer 命中率
key_buffer_read_hits = (1 - Key_reads / Key_read_requests)100%key_buffer_write_hits= (1 - Key_writes / Key_write_requests)100%
mysql -u root -p123456 -e 'SHOW /_!50000 GLOBAL_/ STATUS LIKE "Key%"'
#mysql Innodb Buffer 命中率
innodb_buffer_read_hits=(1-Innodb_buffer_pool_reads/ Innodb_buffer_pool_read_requests)100%
mysql -u root -p123456 -e 'SHOW /!50000 GLOBAL */ STATUS LIKE "Innodb_buffer_pool_read%"'#mysql Query Cache 命中率 Query_cache_hits= (Qcache_hits / (Qcache_hits + Qcache_inserts))100% mysql -u root -p123456 -e 'SHOW /!50000 GLOBAL */ STATUS LIKE "Qcache%"'
#mysql Table Cache 状态量
mysql -u root -p123456 -e 'SHOW /!50000 GLOBAL/ STATUS LIKE "Open%"'
#mysql Thread Cache 命中率
Thread_cache_hits = (1 - Threads_created / Connections)
100% 正常来说,Thread Cache 命中率要在 90% 以上才算比较合理。mysql -u root -p123456 -e 'SHOW /!50000 GLOBAL */ STATUS LIKE "Thread%"'
#mysql 锁定状态
锁定状态包括表锁和行锁两种,我们可以通过系统状态变量获得锁定总次数,锁定造成其他线程等待的次数,以及锁定等待时间信息
mysql -u root -p123456 -e 'SHOW /!50000 GLOBAL/ STATUS LIKE "%lock%"'
5 前端指标监控
5.1 监控指标说明
前端指标主要包括页面展示、网络所花的时间以及前端有哪些地方需要优化。
5.2 监控工具
5.2.1 FireBug
Firebug是firefox下的一个扩展,能够调试所有网站语言,如Html,Css等,但FireBug最吸引我的就是javascript调试功能,使用起来非常方便,而且在各种浏览器下都能使用(IE,Firefox,Opera, Safari)。
Firebug主要功能有:CSS调试、CSS尺标、网络监视器、JS调试器、Console 控制台、修改HTML、DOM查看器。
5.2.2 YSlow
YSlow可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化。 安装YSlow必须首先先安装 Firebug,然后下载YSlow,再对其安装。
YSlow可以分析任何网站,并为每一个规则产生一个整体报告,如果页面可以进行优化,则YSlow会列出具体的修改意见。