使用loadrunner集群进行分布式测试介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
b u c
e p h a l
u s
使用loadrunner 集群进行分布式测试介绍
使用loadrunner 集群可以大大扩展测试机发起负载的能力: ⏹ 解决一台性能测试机不能发起足够大的负载的问题 ⏹ 解决单台性能测试机带宽资源有限的问题 ⏹ 广域网测试中可以模拟分布在不同地域的负载
1. 背景简介
在针对应用系统进行大规模的负载测试时,一台测试机的CPU 、内存、网络、磁盘等资源往往是有限的,难以发起大规模的负载。这时候需要投入更多的硬件资源进行负载测试,loadrunner 提供了进行分布式测试的方法。可以通过一台主控机加上多台agent 机器的方法进行大规模的测试,解决单台测试机压力不足的问题,大大扩展了测试能力。
在rigel 团队中,进行下载、上传等网络带宽资源消耗比较严重的操作时,单台测试机的网络吞吐量容易成为瓶颈,我们通过分布式测试的方法,使用多台机器发起压力,客服了单台测试机吞吐能力不足的问题。
另外,在银行、保险以及大型企业跨地域的系统等大型应用系统中,不可避免的需要将压力产生机分布在各省、地的分公司中,此时使用分布式测试也是必然的选择。
2. 集群环境安装与配置
1. 在中心控制机上安装完整的loadrunner 应用程序;
2. 在从机上安装load generator (也可以选择安装完整的loadrunner 应用程序);
3. 配置agent 环境
4. 添加从机;
b u c
e p h a l
u s
注:loadrunner 现在也支持load generator 安装在unix/Linux 服务器上,因此我们可以从windows 机器控制unix/linux 作为负载产生机来进行压力测试。测试过程中注意如果脚本中含有文件路径相关的操作存取操作,请注意脚本更改和调试。 5. 测试中心控制机和从机的连接;
选择要使用的从机,点击connect 进行测试。如果成功就可以使用中心机进行调度了。如果失败需要检查失败原因,一般要重点检查一下防火墙(windows 自带和防火墙软件)的安全策略以及网络安全策略。
6. 查看agent 的状态
主机和从机连接成功之后,可以在从机上查看agent 的状态。在任务栏右下角有个云朵样的tray 图标,双击打开后可以看到该服务当前服务的主机和当前状态。
例如,下图中服务于DELLD530的agent 正在运行一个虚拟用户,ecom ‐y12则没有运行任何用户。
细心的同学还可以看出,一个load generator 机器可以同时开多个agent 进程服务于不同的主机(controller 所在机器)哦。
b u
c e p h a l
u s
7. 结果收集
测试完成后,测试结果收集的进度窗口会弹出来,可以看到当前的收集状态和details 。
下面的操作就和正常的测试没什么区别了,去分析你的结果吧。
b u c
e p h a l
u s
3. 集群部署时常见错误与排除步骤
由于防火墙和各种网络安全措施的存在,在使用集群测试时最常见的错误就是网络通信的错误。表现出来就是loadrunner 的主控机不能建立和各从机的连接。在主控机上会收到如下错误:
Error: Process "lr_bridge.exe" was not created on remote host "172.12.125.186". Reason: communication error. Make sure the Agent process or service is running on the remote machine..
[MsgId: MERR ‐29987]
针对网络通信错误的问题原因排查,通常步骤如下: 1. 使用PING 命令,让主控机和从机互PING 。在服务器允许PING 命令的情况下,如果PING
不通,请确认网络规则和安全策略对两台机器的通信做了哪些限制。 2. 安全条件允许的情况下,请关闭controller 和agent 之间的防火墙或更改防火墙策略,允
许两者的通信。
3. 在agent 机器上查看54345端口是否处于监听状态,这个端口是agent 的服务端口。(可
以使用netstat –na 来查看)。如果服务没有启动,请启动服务。
4. 查看loadrunner generator 是进程方式还是service 方式运行,如果存在问题,可以试着
切换一下运行方式,或许可以解决问题。
4. 小实验
使用集群的方法运行一下以下一段C 语言脚本,检查test.txt 文件的内容,看看结果如
何。
Action(){
int id, scid,filedes; char *vuser_group;
char * my_host; if((filedes = fopen("c:\\test.txt", "wb")) == NULL)
{
lr_output_message("Open File Failed!"); return ‐1;
}
lr_whoami(&id, &vuser_group, &scid); my_host = lr_get_host_name( );
lr_message( "Host name: %s, Group: %s, vuser id: %d, scenario id %d",my_host, vuser_group, id, scid); fprintf(filedes,"Host name: %s,Group: %s, vuser id: %d, scenario id %d",my_host,vuser_group, id, scid); fclose(filedes); return 0; }