loadrunner测试产品(风评)
一、需求
需求要求支持30并发,响应时间为3秒
根据系统的功能分析后,确定对3个模块做压测,分别是登录,结果分析,统计分析
登录:输入用户名,密码点击登录
结果分析,点击系统任务菜单,加载结果分析页面,点击一下查询按钮
统计分析,统计当前年的任务信息,
二、脚本录制
1) 录制登录脚本:
录制登录脚本,启动 Vuser,录制登录过程
遇到的问题:
1、启动浏览器后,事务一直不累加
解决
2、点击录制,在弹出的页面选择opitions
2) 回放脚本 设置关联
回放脚本完成后,切换到tree视图,对比2次的sessionid不一样,确定需要关联,选中需要关联的内容,点击右键—create correlation 创建关联
3) 创建集合点,事务,检查点
注:集合点应该添加在开始事务之前
三、场景设计
登录 持续运行20分钟,并发30用户,每3秒上10个用户,每3秒下10个用户
四、结果分析
Cpu
%processor time (当前进程的cpu利用率) 正常值为60~70, 最好不大于 75,持续在90以上说明可能有问题
Processor queue length (cpu队伍长度) 大于等于2 可能有问题
看上述2个指标,当%processor time持续大于 90% ,Processor queue length大于等于 2,则说明cpu有瓶颈
当Processor queue length大于等于 2,而%processor time 特别低,低于60%时,可能是cpu阻塞
内存:
内存占用率算法
Avaiabe mbytes :剩余可用内存
Cmd 中 使用systeminfo查出总物理内存
(总物理内存-剩余可用内存)/总物理内存
内存泄露
Pravites bytes 和working set升高,但是 available Mbytes(利用可用内存
)降低,这时可能发生内存泄露
内存不足
磁盘:
%Disk Time 小于10, available disk queue length 小于磁盘个数的1.5~2倍, disk transfer bytes <15 很好, 15~30间良好,30~60间可以接受,大于60差
当avaiable mbytes 降低,而%disk time 和avaiable disk queue length 升高,则磁盘可能存在瓶颈。
11.1 系统性能常用指标分析
11.12.1 CPU
11.12.1.1 监控指标
计数器名称 |
解释 |
参考值 |
% Processor Time |
指处理器用来执行非闲置线程时间的百分比,即CPU利用率
计算方法是,度量处理器用来执行空闲线程的时间,然后用100% 减去该值。 |
参考值:60%-70%
过低,则服务器CPU利用率不高; 过高,则CPU可能成为系统处理瓶颈。 最好不要超过75%,持续超过90%,表明瓶颈,需增加或换个更快的处理器 如果服务器专用于sqlserver可接受的最大上限上80%-85%,
|
ProcessorQueue Length |
处理列队长度
线程在等待分配CPU资源所排队列的长度,此长度不包括正在占有CPU资源的线程。 如果该队列的长度大于处理器个数+1,就表示处理器有可能处于阻塞状态 |
参考值:<=处理器个数+1
|
如下图所示:
11.12.1.2 判断CPU瓶颈
如果processor queue length显示的队列长度保持(>=2)并且处理器的利用率%Processortime超过90%,排除内存因素后,同时网卡和硬盘的值比较低,那么很可能存在处理器瓶颈.
11.12.1.3 判断CPU阻塞
如果发现processor queue length显示的队列长度超过2,而处理器的利用率却一直很低,
可能不是处理器瓶颈,而是处理器阻塞。
如下图所示:
%processor time平均值大于90,processor queue length大于2.可以确定CPU瓶颈.此时的CPU已经不能满足程序需要.急需扩展.
11.12.1.4 相关定义
阻塞------线程在执行中如果遇到磁盘读写或网络通信(统称为 I/O 操作),通常要耗费较长的时间,这时操作系统会剥夺这个线程的 CPU 控制权,使其暂停执行,同时将资源让给其他的工作线程,这种线程调度方式称为阻塞。
瓶颈------由硬件资源相对于当前负荷不足而导致
11.12.2 内存
计数器 |
解释 |
参考值 |
Available Mbytes 剩余的可用物理内存 |
单位是兆字节. 如果Available Mbytes的值很小(100 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。 |
至少10%的物理内存 |
Page Reads/sec 每秒页面读取次数
|
表示为了解决硬错误而从硬盘上读取的页数。 |
阈值为5,越低越好
若此值比较大,说明内存可能不足
|
Page/sec |
处理器每秒从磁盘读取或写入总页数 |
参考值0--20
如果大于80,表示有问题。 太多的读写数据操作要访问磁盘,可考虑增加内存或优化读写数据的算法 |
Page Faults/sec 处理器每秒处理的错误页 |
当处理器在内存中读取某一页出现错误时,就会产生缺页中断 |
该值偶尔走高,表明当时有线程竞争内存。 持续很高,则内存可能瓶颈 |
Page Input/sec |
表示为了解决硬错误而写入硬盘的页数 |
参考值:>=Page Reads/sec |
Cathe Bytes 文件系统缓存 |
文件系统缓存 |
默认情况下为50%的可用物理内存 |
Private Bytes 进程私占字节数 |
是指已由进程分配但无法与其他进程共享的当前字节数。 如果系统性能随着时间而降低,则此计数器可以是内存泄漏的最佳指示器 |
计数器有明显增长或值较大,表明存在内存泄漏 |
Working set 工作集大小
|
以字节为单位处理线程最近使用的内存页
|
由于每个进程工作集中包含了共享页面,所以ProcessWorking Set值会大于实际的总进程内存使用量 |
内存占用率:
如测试机总的物理内存为1024M,Available Mbytes为89M
则:内存占用率为(1024-89)/1024=91%
可用内存使用率89/1024=9%
可用率小于10%,说明内存可能不足或某些程序没有释放内存
11.12.2.1 判断内存泄漏
内存问题主要检查是否存在内存泄漏,如果发生了内存泄漏,process\private bytes计数器和process\working set 计数器的值往往会升高,同时avaiable bytes的值会降低.
如下图中可以看到该程序存在内存泄露的问题.
注意:内存泄露问题经常出现在服务长时间运转的时候,由于部分程序对内存没有释放,而将内存慢慢耗尽.所以最好对系统稳定性也进行测试。
11.12.2.2 判断内存不足
以通过 page/sec,Available Mbytes、page read/sec、page faults/sec等计数器的指标进行监控,查看内存是否有问题。有两种方式:
- 通过pages/sec指标判断是否存在内存问题,如果pages/sec持续高于几百,如果pages/sec指标过高(几百),而硬盘数据流量不高(几百kb/s)则可确定是内存不足问题,需要增加内存,以减少换页的需求;如果pages/sec指标较高(几百),而此时硬盘数据流量也很高(几千kb/s),则可以判定是磁盘问题。
- 如果页面读取操作速率page reads/sec指标的值很低,如果Avg.disk queue length增加的同时page reads/sec页面读取速率指标并未降低,则确定为内存不足。同时%disk time和avg.disk queue length的值却很高,则确定为磁盘瓶颈。
11.12.2.3 相关定义
内存泄漏-------也称为“存储泄漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏。
页交换-------是使用称为“页面”的单位,将固定大小的代码和数据块从 RAM 移动到磁盘的过程,叫页交换,其目的是为了释放内存空间。
软错误、硬错误------当处理器向内存指定的位置请求一页(可能是数据或代码)出现错误时,这就构成一个page fault,如果该页在内存的其它位置,该错误被称为软错误(用Transition Fault/sec记数器衡量):如果该页必须从硬盘上重新读取时,被称为硬错误,许多处理器可以在有大量软错误的情况下继续操作。但硬错误可导致明显的拖延
11.12.3 磁盘
计数器 |
解释 |
参考值 |
%Disk Time 磁盘利用率 |
表示磁盘驱动器为读取或写入请求提供服务所用的时间百分比 |
正常值<10, 如果持续超过80%,说明磁盘有问题 |
Avg.Disk Queue Length 平均磁盘队列长度 |
是指在采样间隔期间所选磁盘的平均排队读取和写入请求数 |
该值不应超过磁盘数的1.5~2倍(注意有多少个磁盘) |
Disk Transfers/sec 每秒磁盘传输率 |
是指磁盘上的读写速率。 |
<15ms 很好 15~30ms良好 30~60ms可以接受 >60ms需更换更快的硬盘 |
Disk Read/sec |
|
两者相加,应小于磁盘设备最大容量。 |
Disk Write/sec |
11.12.3.1 判断磁盘瓶颈
由三个指标进行判断Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。
如果Page Reads/sec页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。
11.12.4 网络
计数器 |
解释 |
参考值 |
Bytes Total/sec 字节传输速率 |
为发送和接收字节的速率之和,包括帧字符在内。判断网络连接速度是否瓶颈,可以用该计数器的值和目前网络的带宽比较 |
该值和目前网络带宽相除,结果应该小于50% |
11.12.4.1 判断网络连接速度瓶颈
将Bytes Total/sec的值除以当前带宽值,大于50%,则为网络连接速度瓶颈
如当前值为10240000,当前带宽为10M
10240000B=9.7M,9.7/10=97%>50%,所以当前网络连接速度可能瓶颈
11.2 常见问题与解决
11.13.1 结果分析中的思考时间是从哪里过滤?
结果分析的思考时间指的是生成图例的时候可以选择考虑思考时间的,也可以选择去掉思考时间的各个指标,前提是场景中设了思考时间的在结果分析中才谈得上去除思考时间。
单纯登录退出放在action,如果是对其他的操作进行压测的话,就把登录放在init里面,退出放在end里面。
init为action提供操作的前置条件,把登录放到init里面就省去了每次运行都需要重新登录的情况了。
11.13.2 windows资源监控中内存占用率?
如在下图所示内存可用为2755,单位为MB,被监控内存为4G
内存占用率:4G=4000MB
[(4000MB-2755MB)/4000MB]*100%=31%