负载生成器(负载机)
1. 负载机的概念及作用
概念
在 LR 中运行场景内脚本的机器被称为负载机
作用
负载机上运行达到减压不减虚拟用户的目的
2. 负载机的添加过程
参照百度(...)
3. 负载机的安装配置及注意事项
安装配置
负载机需要安装LR或者Load Generator
注意事项
1. 网络:负载机与控制机网路通畅;使用 ping 10.211.55.4
2. 代理服务程序:
说明:负载机必须启动 LoadRunner Agent Process 代理服务程序;
(位置:开始程序 -> HP LoadRunenr -> Advanced Settings -> LoadRunner Agent Process)
3. 防火墙:负载机上的防火墙为关闭状态;
4. 权限配置:
说明:负载机运行设置工具内输入负载机本机登录用户名和密码,目的解决是控制机远程连接负载机的权限问题
(位置:开始程序 -> HP LoadRunner -> Tools -> LoadRunner Agent Runtime Settings Configuration)
场景的运行
1. 虚拟用户状态图的作用
场景运行初期,虚拟用户没有初始化完成前,对虚拟用户的状态进行监控
2. 场景运行概览图的作用
场景启动和结束时,对场景运行的控制和状态的监控
Errors(错误数)
场景运行初期
场景设置存在问题
服务器负担不了当前场景要求
场景运行过程中
服务器出现性能瓶颈,需要调优优化
场景运行结束后
控制机和负载器断连导致的报错,一般可以不予理会
3. 性能计数器的使用步骤
从左侧可用图表内选择对应指标,双击或拖拽实现
监控服务器性能资源指标
1. 性能计数器与性能指标的关系?
性能计数器是获取系统资源使用情况的,根据获取的数据可以比对性能指标是否符合预期
2. 添加监控指标服务器时,Name为?
要监控的服务器的IP地址
3. Available Byte(Memory)指标的含义?
可用内存(Byte)
如何在lr添加服务器的资源指标
参考课间
注意事项
1. 确保LR控制机与需要监控的PC机网络通畅(ping 192.168.X.X )
2. Remote Procedure Call (RPC)、Remote Procedure Call (RPC) Locator、Remote Registry、
Workstation 这些服务都需要确认为已启动状态。
3. 本地账户共享和安全模型-经典-对本地用户进行身份验证不改变其本来身份【win7旗舰版默认】
(gpedit.msc 计算机配置->Windowns设置->安全设置->本地策略->安全选项->网络访问:本地账户共享和安全模型)
服务水平协议
1. SLA服务水平协议是什么?
Service Level Agreement(SLA) 是在场景执行之前定义相应的负载测试目标,在场景运行之后 Analysis
将运行时收集的指标值和SLA设定的进行对比,然后确定本次测试是成功还是失败。
IP欺骗
1. IP Wizard 的应用场景
限制IP访问的项目,比如:投票系统
2. IP Wizard 的使用注意事项
1. 使用 IP Wizard 必须确保 IP 地址为静态 IP,不能为动态(DHCP)IP
2. 负载机必须启用 LoadRunner Agent Process 程序
3. 运行场景时,启用 Enabled IP Spoofer 选项
4. 虚拟用户模式选择进程模式(默认为线程)
(Run-time Settings for script -> Miscellaneous(其他) -> Multithreading -> Run Vuser as a process)
5. 启用专家模式 -> 菜单Tools -> Expert mode
6. 设置多个 IP 模式为进程
(菜单Tools -> options -> General -> Multiple Ip address mode(IP address allocation per process)
7. LoadRunner 安装目录下 dat 文件夹下 mdrv.dat 文件内 lr_socks 选项添加
ExtCmdLineConc=-UsingWinInet Yes
8. 忽略Web页面诊断
(菜单Diagnostics -> Diagnostrics Distribution -> Web Page Diagnostics...)
9. 负载机需要设置 IP Wizard
3. 获取虚拟用户 IP 地址的函数
lr_get_vuser_ip()
代码
Action()
{
// 设置响应信息最大长度
web_set_max_html_param_len("1024");
/* Registering parameter(s) from source task id 13
// {WCSParam3} = "126280.293479141ztQfftcpfQfiDDDDDiQHDpcfffHf"
// */
// 产生关联, 获取session
web_reg_save_param("session",
"LB/IC=name=userSession value=",
"RB/IC=>",
"Ord=1",
"Search=Body",
"RelFrameId=1.2.1",
LAST);
// 插入订票集合点
lr_rendezvous("订票");
// 打开登录页面
web_url("打开登录页面",
"URL=http://127.0.0.1:1080/WebTours/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
// 登录
// 插入开始的事务
lr_start_transaction("login");
web_submit_data("登录",
"Action=http://127.0.0.1:1080/WebTours/login.pl",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value={session}", ENDITEM,
"Name=username", "Value={user_name}", ENDITEM,
"Name=password", "Value={password}", ENDITEM,
"Name=JSFormSubmit", "Value=on", ENDITEM,
"Name=login.x", "Value=48", ENDITEM,
"Name=login.y", "Value=9", ENDITEM,
LAST);
// 插入结束事务
lr_end_transaction("login", LR_AUTO);
lr_think_time(17);
// 搜索航班信息
// 插入订票开始的事务
lr_start_transaction("订票");
web_url("搜素航班信息",
"URL=http://127.0.0.1:1080/WebTours/welcome.pl?page=search",
"TargetFrame=body",
"Resource=0",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home",
"Snapshot=t3.inf",
"Mode=HTML",
LAST);
// 选择座位
web_submit_data("选择座位",
"Action=http://127.0.0.1:1080/WebTours/reservations.pl",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/reservations.pl?page=welcome",
"Snapshot=t4.inf",
"Mode=HTML",
ITEMDATA,
"Name=advanceDiscount", "Value=0", ENDITEM,
"Name=depart", "Value=Denver", ENDITEM,
"Name=departDate", "Value=05/28/2019", ENDITEM,
"Name=arrive", "Value=Denver", ENDITEM,
"Name=returnDate", "Value=05/29/2019", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name=seatPref", "Value=Window", ENDITEM,
"Name=seatType", "Value=Business", ENDITEM,
"Name=.cgifields", "Value=roundtrip", ENDITEM,
"Name=.cgifields", "Value=seatType", ENDITEM,
"Name=.cgifields", "Value=seatPref", ENDITEM,
"Name=findFlights.x", "Value=72", ENDITEM,
"Name=findFlights.y", "Value=11", ENDITEM,
LAST);
// 选择航班
web_submit_data("选择航班",
"Action=http://127.0.0.1:1080/WebTours/reservations.pl",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/reservations.pl",
"Snapshot=t5.inf",
"Mode=HTML",
ITEMDATA,
"Name=outboundFlight", "Value=000;0;05/28/2019", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name=advanceDiscount", "Value=0", ENDITEM,
"Name=seatType", "Value=Business", ENDITEM,
"Name=seatPref", "Value=Window", ENDITEM,
"Name=reserveFlights.x", "Value=57", ENDITEM,
"Name=reserveFlights.y", "Value=12", ENDITEM,
LAST);
// 支付
web_submit_data("支付",
"Action=http://127.0.0.1:1080/WebTours/reservations.pl",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/reservations.pl",
"Snapshot=t6.inf",
"Mode=HTML",
ITEMDATA,
"Name=firstName", "Value=Joseph", ENDITEM,
"Name=lastName", "Value=Marshall", ENDITEM,
"Name=address1", "Value=234 Willow Drive", ENDITEM,
"Name=address2", "Value=San Jose/CA/94085", ENDITEM,
"Name=pass1", "Value=Joseph Marshall", ENDITEM,
"Name=creditCard", "Value=", ENDITEM,
"Name=expDate", "Value=", ENDITEM,
"Name=oldCCOption", "Value=", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name=seatType", "Value=Business", ENDITEM,
"Name=seatPref", "Value=Window", ENDITEM,
"Name=outboundFlight", "Value=000;0;05/28/2019", ENDITEM,
"Name=advanceDiscount", "Value=0", ENDITEM,
"Name=returnFlight", "Value=", ENDITEM,
"Name=JSFormSubmit", "Value=off", ENDITEM,
"Name=.cgifields", "Value=saveCC", ENDITEM,
"Name=buyFlights.x", "Value=63", ENDITEM,
"Name=buyFlights.y", "Value=14", ENDITEM,
LAST);
// 插入订票结束事务
lr_end_transaction("订票", LR_AUTO);
// 退出
web_url("SignOff Button",
"URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=1",
"TargetFrame=body",
"Resource=0",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=flights",
"Snapshot=t7.inf",
"Mode=HTML",
LAST);
return 0;
}