1.录制:Resording ->http/html level
Html-based script :同一地址下集合多个数据或文档信息
web_url("survey.jsp",
"URL=http://108.88.3.247:8806/service/survey.jsp?catid=221|239",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t5.inf",
"Mode=HTML",
EXTRARES,
"Url=../images/bg_01.jpg", "Referer=http://108.88.3.247:8806/service/survey.jsp?catid=221|239", ENDITEM,
"Url=../images/main_bg_01.jpg", "Referer=http://108.88.3.247:8806/service/survey.jsp?catid=221|239", ENDITEM,
"Url=../images/left_search_input.jpg", "Referer=http://108.88.3.247:8806/service/survey.jsp?catid=221|239", ENDITEM,
LAST);
Url-based script :只录制单一数据或文档信息
web_url("base.css_7",
"URL=http://108.88.3.247:8806/styles/base.css",
"Resource=1",
"Referer=http://108.88.3.247:8806/flash/menu.swf",
LAST);
2.录制完成的脚本,必须备份好一份原始数据
3.思考时间与事务处理:在优化脚本过程中,把事务中的思考时间全部删除掉,并且在事务开始之前,添加一个思考时间来代替事务中被删除的思考时间
4.文本检查点:大多数在录制脚本过程,一同设置检查点(这样比较方便,也同时不会把检查点的位址放错地方);当然检查点也可以是后期添加,但要对脚本需要设置检查点的位置要相当清楚
5.运行设置:
大容量测试:设置Global Schedule->Duration
压力测试:预测压力测试的最大值,才可以进行压力测试
负载测试:累加客户数量,进行负载测试
6.参数化设置、关联
7.使用编写语言方式实现:Run Logic
//概率30%
Action()
{
int rowNum;
rowNum=rand()%100+1;
if(rowNum<=30)
Vuser_init();
Return 0;
}
8.参数化-Sequential
1)Sequential+Each iteration按迭代次数顺序读取参数化列表数据
2)Sequential+Each occurrence按参数化列表的数据,每个参化都会对应参数化列表唯一的一个数据(参数化值只读取一次)
3)Sequential+Once按迭代或循环都只会读取参数化的一个值
9.参数化-Unique取值
1)Abort Vuser当取数超过参数化列表,脚本停止
2)Continue in a cyclic manner当取数超过参数化,会循环方式读取参数化列表
3)Continue with last value当取数超过数化,会以参数化列表最后一个值来运行脚本
****备注:为了保证参数化使用Unique取值方式,必需以下公式成立:
Param参数记录条数>=迭代次数*Vuser数目
10.参数化-Same line as(中文:按名称)
设置参数化在参数化列表中的选项列;简单就是说,同一个参数化列表,设置多个参数化,并且单独分配给参数项
11.函数
web_add_cookie :vuser脚本添加一个cookie信息
web_link :摸拟用户单击一个超链接的操作
web_url :模拟用户请求
web_submit_form :自动检测在当前页面上是否存在form,然后将后面Itemdata数据进行传送
web_submit_data :无须前面的页面支持,直接发送给对应页面相关数据
12.IE需要去掉第三方浏览器扩展 ;不去掉的话,会造成录制时自动关闭IE浏览器
***************************
**************************************************************************
实际应用:
1.替换原有脚本的地址
2.在测试本机,设置资源计数器,并设置为手动监控 &
文件起名:年月日+性能测试名称 20121120-xinge
脚本起名: VU+性能测试名称+年月日 vu-xingye-20111228
********录制脚本:***********
***************************************************************************
1.录制好的脚本,进行备份
2.脚本的思考时间全部注释
3.事务之前都必须思考时间约为5秒 lr_think_time(5);
4.录制脚本过程中,可以加插检查点,一般针对数字或英文进行,主要为了减少运行脚本所出现的错误
5.如果单单想知道哪个页面的事务加载时间,可以单独添加一个事务
6.每个事务的排序,必须在事务名前面加上排序号码,方便分析报告时,防止各个事务随机排序
lr_start_transaction("101_首页");
lr_start_transaction("201_楼盘展示");
7.开始录制前,不要添加测试地址,这是为了更好的不相关联的地址进行测试
8.run-time setting ->Internet Protocol -> Preferences 设置检查点:Enable Image and text check
9.每个性能测试点,都需要单独设立一个Action进行录制,除了子类相同可以同一个Action
10.显示运行页面 Tools ->General Options ->Display -> 勾上Show Browsser during replay & Auto arrange windo
********运行场景:************
***************************************************************************
1.测试出最大用户数
*start vusers :设置较在用户数
*直接运行场景
*Scenario Groups 手动启动用户执行
*打开计算机的任务管理器->性能 //查看CPU是否已经满载
*场景出现失败事务或出错 //也差不多可以确定最大用户数
重第3,4, 5可以快速找到服务器的最大用户数
2.压力测试、负载测试,基于已经找出来的最大用户数,在场景设置中正常设置运行的环境
********监控资源----windows********
***************************************************************************
1.开始->运行->输入perfmon,启动性能监控器
2.性能日志和警报->计数器日志->新建日志(新的性能日志)
3.新的性能日志窗体:
->常规-添加计数器、数据采样最好设置为 5 到 10 秒
->日志文件-设置文件名结尾 例:设mmddhhmm :月日时分
->计划-启动日志(手动&自动,看情况需要)
-停止日志(日志最好为1至2天的文件大小,如果需要继续监控系统可以设置:当日志文件关闭时,启动一个新的日志文件)
4.查看日志文件:C:\PerfLogs
5.打开性能监控器->系统监视器->查看日志数据->来源->日志文件->选取生成的日志文件->时间范围,设置需要的时间范围->点击确定,就会显示日志文件监控资源情况
6.生成CSV文件提供给LR分析报告->右键数据图表,选择数据另存为->格式:文本文件CSV->点击保存
名称:性能测试名 + 年月日 + 号码排序
********perfmon********************
***************************************************************************
% Processor Time(Processor _Total,应用服务进程,数据库服务进程,如java,sqlservr等)(90%以下)
Process
ID(监控Process
ID是否变化,判断是否进程崩溃重启了)
Process & Processor:User Time
Process:Working Set (Process _Total)
Process:Private Bytes(Process _Total,应用服务进程,数据库服务进程,如java,sqlservr等)
Process:Virtual Bytes(Process _Total,应用服务进程,数据库服务进程,如java,sqlservr等)
Memory: Available Mbytes(memory)(5MB以上)
Memory: Committed Bytes(memory)
Memory: Pages/sec(0~20,不能超过20)
System: Context Switch/sec(system)
System: Processor Queue Length(不能高于CPU数的2倍)
Exception Dispatches/sec(physicalDisk)
File Data Operations/sec(physicalDisk)
Avg. Disk Queue Length (PhysicalDisk _Total)(不能高于磁盘数的2倍)
Disk reads/sec(physicalDisk)
Disk writes/sec(physicalDisk)
% Disk Time (PhysicalDisk _Total)(55%以下)
Threads (Objects)
%disk time超过100%的解析
现象:
在LR上我们可以看到%disk time超过100%的现象.
如果机器处在很忙的状态,这个值有可能会超过100%,
比如,复制大量的文件.
原因:
出现这种现象的原因是处理器允许操作系统使用重叠的I/O,
磁盘性能计数器使用一个100纳秒精度的计数器来度量磁盘时间,
再按照采样频率显示出来.采样后的时间可能会超过100%,
比如:在2毫秒内有10个请求,采样时间为10毫秒.如果是raid磁盘,
因为操作系统可以读写到多到磁盘上,从而产生重叠 I/O,
这会使%disk time大于100%.
其实:
要度量磁盘时间及磁盘延迟的问题,
可以用以下几个计数器来看,
通常情况下,如果以下几个计数器之一的值有大于20毫秒的话,磁盘就是超负荷了.
Avg.Disk sec/Readavg.Disk sec / WriteAvg.Disk sec/Transfer
% Disk Time (PhysicalDisk _Total)(55%以下)
55%是指平均到单个磁盘,但是很多时候我们不知道他有多少个磁盘做阵列,
所以就可以用Avg.Disk sec/Readavg.Disk sec / WriteAvg.Disk sec/Transfer
监控数据库的相关计数器:
Login/sec
Full scans/sec(全表扫描/秒)
Buffer Manager(缓冲器管理器)
Buffer cache hit ratio()
cache hit ratio(高速缓存命中率)
Latches Waits/sec(闩等待/秒)
Locks(锁)
Lock blocks(服务器上锁定块的数量)
Number of Deadlocks/sec(死锁的数量/秒)
Average Wait time(ms)(平均等待时间(毫秒))
Lock Requests/sec(锁请求/秒)
Memory Manager
SQL Server General: User Connections(要比"Maximum Worker Threads" 的配置值(缺省值255)低)
********LR使用监控数据的文件********
***************************************************************************
1.启动LR Analysis->Tools->Ecternal Monitors ->Import Data->添加生成的CSV文件->File Format(选取性能服务器系统)->点击确定->Select Monitor Type->选择外部性能服务器系统,点击确定,OK了
********LR报告分析*********
***************************************************************************
1.LR报告的平均事务响应时间: 每秒执行事务的平均时间
2.吞吐量(网络方面): 场景运行过程中服务器的每秒的吞吐量
环境网络为10MB 但实际网络环境为10MB / 8 =1.25MB左右
如果用户数增加,吞吐量不变(范围值:1.25MB),说明吞吐量为瓶颈
2-1.吞吐量图与每秒事务数图
如果用户数增加,点击率不变。看是否为吞吐量为瓶颈,如果不是,可能是系统资源问题;
如果点击的次数增加而吞吐量持续不变或减少,就说明服务器无法执行增加的请求(每秒点击率),结果就是事务反应时间的增加;
3.windows资源(CPU\队列:核数*2):
%Processor Time:CPU使用率超过90%表时CPU为瓶颈
Processor Queue Length:队列长度持续大于2(核心数),利用率Processor Time一直很低,表示可能出现处理器拥塞
%User Time:表示耗费CPU进行数据库操作; 可考虑增加索引,尽用使用简单的表连接
%DPC Time:越低越好;在多处理器系统中,加入一个网卡可能会提高性能,如果值大于50%并且%Processor Time非常高,说明网络已经不饱和
4.windows资源(硬盘\队列:盘数*2):
%Disk Time :如果%Disk Time数值较大,表明硬盘可能会是瓶颈;如果数值持续超过80%,可能是内存漏泄
Avg.Disk Queue Length:较高的值表时磁盘控制器由于失败而不断重试磁盘;值应不超过磁盘数的1.5倍,要提高性能,可增加磁盘; 备注:一个Raid Disk实际有多个磁盘
Average Disk Read/Write Queue Length:指读取/写入请求列队的平均数
Average Disk sec/Transfer:写入数据所需的平均时间;值控制在小于15ms为最佳,介于15~30ms之间为良好,30~60ms之间为可以接受,超过60ms需要考虑更换硬盘或硬盘的RAID方式
%Disk Time和Avg.Disk Queue Length的值很高,而page Reads.sec页面读取操作速率很低,可能存在磁盘瓶颈
5.windows资源(内存):
Available Mbytes:可用物理内存数;如果值小于100MB,说明计算机总的内存不足,或程序没有释放内存
Committed Bytes:是指有多少虚拟内存正在被使用,虚拟内存是占用硬盘空间的内存,不占用物理内存
Page/sec:如果值很大,表明内存有问题,或运行使用内存映射文件的程序所致
Cache Bytes:文件系统缓存,默认情况下为可用物理内存的50%;
内存漏泄:监控Memory-Available Byter & Committed Bytes
内存漏泄的进程:监控Process-Private Bytes & Working set & Handle Count
内核模式进程导致漏泄:监控Memory-Pool Nonpaged Byter & Pool Nonpaged Allocs & Process-process_name & Pool Nonpaged Bytes
6.windows资源(数据库\事务总数)
******************************
***************************************************************************
Mercury Virtual User
第一步:录制需要进行性能测试的业务流程
Init:包含登录过程
Action:包含实际业务流程(BP)
End:包含注销和清理程序
Vusers只重复Action中的步骤
第二步:回放脚本
第三步:编辑脚本
添加事务:度量一个或多个步骤
参数化值:为更真实模似环境,参数化用户或其他数据
添加内容检查:插入->新建步骤:web_reg_find,输入检查的内容;例如:需要检查用户名:root ,直接在搜索特定文本:root,确定后生成:
web_reg_find("Text=root",
LAST);
第四步:准备回载
常规其他:需要按线程运行Vuser;
迭代次数:循环次数
迭代的时间间隔:循环一次后,多久才继续模拟业务
并发用户:同一物理时间运行的用户数量
关注: 业务并发用户、服务端承受最大并发
思考时间:每个请求之间的间隔时间
关注:如何模拟正式环境?
网络:速度模拟
关注:如何模拟真实的网络环境?
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
********sitescope培训********
***************************************************************************
1.了解sitescope :为专门监控Unix & Linux的软件;以前的如果要监控Linux就必须在Linux服务器里面安装软件才能监控,监控的效果也不如理想;
1-1监控Oracle
LoadRunner除了可以用本地监控器来收集Oracle的性能数据外,还可以整合SiteScope对Oracle进行监控。
根据SiteScope帮助文档,需要把Oracle JDBC database driver 文件 (classes12.zip)放到 SiteScope\java\lib\ext,之后重启SiteScope才能对Oracle进行监控。
( classes12.zip 文件可以在oracle安装目录下得到 \oracle \jdbc\lib \classes12.zip)
数据库连接URL: jdbc:oracle:thin:@108.88.3.223:1521:test
数据库驱动程序:oracle.jdbc.driver.OracleDriver
重启SiteScope服务
\Web-INF\lib 和 \java\lib\ext
如出现Error Code: 31008. Error Description: Error getting counters : unable to retrieve the counters:请设置监控的计算机 远程桌面设置为允许使用 & 禁用防火墙
另外需注意的是:连接Oracle的数据库用户必须是DBA权限的用户。
1-2监控Mysql
1.下载java版的mysql驱动程序(JDBC驱动程序,最后是5版本以上的)
下载后进行解压缩,将解压缩的mysql-connector-java-5.1.14-bin.jar文件复制
C:\SiteScope\java\lib\ext 目录下(以你的安装目录为准)
2.添加mysql计数器
进入“监控器”界面,选中"sitescope"点击右键,选择新建组,输入组的信息,如组名称为mysql。
右击组“mysql”,选择新建“监控器”,在新建监控器界面选择“数据库计数器”
数据库连接:输入jdbc:mysql://mysql服务器IP:端口号/数据库名称 (端口默认是3306可以不写出来)
查询:show status(表示把所有参数显示出来,然后进行选择)或是show status where variable_name like '其中的参数’(表示直接选择要监控的参数)
数据库驱动程序:org.gjt.mm.mysql.Driver
数据库的用户名和密码:root 密码
上述信息填写完毕后,点击“获取计数器”,在显示出来的计数器中勾选要监控的计数器,点击“确定”,添加计数器结束。
查询:show status
数据库驱动程序:org.gjt.mm.mysql.Driver
数据库的用户名和密码:root 密码
数据库连接:jdbc:mysql://108.88.3.223:tf