LoadRunner系统架构简介
1.LoadRunner系统架构简介
LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS、Apache等Web服务器发送HTTP等协议请求。通过Load Generators可以产生大量的虚拟的客户端请求,已达到产生各种不同服务(根据协议的不同而不同)的负载。这些负载生成器都通过Controller来启动和停止控制的。而Controller通过由一组涉及到具体的运行设置的脚本的“场景”来控制具体的负载的运行。
脚本的创建是通过VUGen(Virtual user scrīpt Generator)来实现的,VUGen支持创建基于C语言的脚本,这些脚本被虚拟用户执行后可以捕获Internet应用程序的客户端和服务端之间的网路流量详细情况。如果是Java客户端,VUGen则通过客户端JVM来捕获相关信息。在运行期间,每台负载机的运行情况是通过Controller来控制的。当每一次执行结束后,Controller通过从负载生成机收集监控到的完整的相关日志信息,并确保这些信息能够被Analysis正确分析。而Analysis则支持通过分析收集的相关日志信息来生成各种形式的含有图形的结果报告,比如Word、Crystal 报告或者一份HTML形式报告。对于由Analysis产成每一份HTML形式的报表页均包含含有结果的文件连接,而这些文件可以通过Excel来打开进行其他额外的数据分析。运行期间产生的错误信息都存储在一个能通过Access读取访问的数据库中。
2.运行原理
假设已经录制好一个基于HTTP协议的采用URL方式录制的脚本,脚本命名为logingmail。下面针对这个来剖析下这样一个脚本有哪些文件组成,以及脚本在单个Vuser情况下的执行过程。
logingmail------------------------脚本名
|------Action.c
|------logingmail.usr
|------vuser_end.c
|------vuser_init.c :前面四个文件跟具体的logingmail的脚本有关。
|------gloabals.h :全局的头文件
|------default.cfg :默认的录制选项的配置文件
|------default.usp :默认的运行选项的配置文件?
|------data :具体的数据文件夹
1.创建 options.txt 文件,其中包含预处理器需要的命令行参数。
2.创建 combined_logingmail.c(说明,都是以combined_打头加上具体的脚本名),其中包含对所有相关 .c 和 .h 文件的"include"。
3.调用 c 预处理器 cpp.exe(LR自己的开源的C预处理器,在安装程序对应的bin目录下),以便在开发文件中“填充”所有宏定义、预编译器指令等,cpp.exe 是一个共享可执行程序,与早期有问题的版本完全不同。它使用了以下命令行:cpp -f options.txt。
4.创建文件 pre_cci.c,它也是 C 文件(pre_cci.c 是在 options.txt 文件中定义的)。创建文件 logfile.log (也是在 options.txt 中定义的),其中包含此进程的所有输出。如果预处理阶段没有问题,则此文件应为空。如果此文件不为空,则几乎可以肯定由于致命错误,下一阶段的编译将失败。该文件再通过编译器编译成中间码,供LR执行器执行。
5.调用 cci.exe C编译器(在安装程序对应的bin目录下),创建与平台相关的伪二进制文件 (logingmail.ci),该文件将由在运行时解释它的虚拟用户驱动程序所使用。cci 会将 pre_cci.c 文件作为输入。文件 pre_cci.ci 是按以下方式创建的:
cci -errout E:\LoadRunner\Testscrīpt\logingmail\logfile.log -c pre_cci.c
6.文件 logfile.log 是包含编译输出的日志文件。
7.文件 pre_cci.ci 此时将重命名为 logingmail.ci(以脚本名命名)。由于编译可能包含警告和错误,而且由于驱动程序不了解此进程的结果,因此驱动程序首先检查 logfile.log 文件中是否存在任何条目。如果存在,它将接着检查文件 logingmail.ci是否已构建。如果该文件的大小不为零,则表示 cci 已成功编译(如果为零,则表示编辑已失败,并将显示错误消息)。
8.相关的驱动程序运行时将把 logingmail.usr 文件和 logingmail.ci文件作为输入。例如:
mdrv.exe -usr ...省略了路径\logingmail.usr -out 工作路径 -file ...省略了路径\logingmail.ci,需要有 .usr 文件,因为它将通知驱动程序正在使用的数据库。这样,便可以了解运行时需要加载哪些库。
9.调用执行器mmdrv.exe执行。执行时创建 output.txt 文件,存放运行的所有输出消息。此输出与 VuGen 运行时输出窗口以及 VuGen 主窗口下半部分显示的输出相同。
10.运行单个Vuser的脚本时,Vuser ID始终为-1。
LoadRunner系统架构简介的更多相关文章
- LoadRunner系统架构简介与运行原理
1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...
- 【转帖】LoadRunner系统架构简介
LoadRunner系统架构简介: LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP协 ...
- android 系统架构简介
Android系统采取的是分层的架构,根据官方文档提供的架构图,我们将android的系统架构分成5层,如图: 1.Application Framework (应用框架) application f ...
- Kubernetes系统架构简介
1. 前言 Together we will ensure that Kubernetes is a strong and open container management framework fo ...
- Kubernetes系统架构简介--转
原文地址:http://www.infoq.com/cn/articles/Kubernetes-system-architecture-introduction?utm_campaign=infoq ...
- Android系统简介(中):系统架构
Android的系统架构栈分为4层,从上往下分别是Applications.Application framework.Libraries & Android Runtime.Linux ...
- Android系统架构及内核简介
(来源于ThinkPHP) Android是Google公司开发的基于Linux平台的开源手机操作系统,它包括操作系统.中间件.用户界面和应用程序,而且不存在任何以往阻碍移 动产业创新的专利权障碍,并 ...
- (系统架构)标准Web系统的架构分层
标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...
- dubbo框架----探索-大型系统架构设计(图解)
对于高并发系统的架构要求: 1. 负载均衡 2.高并发 3.高可用 4.面向服务架构 (Dubbo框架使用) 5.分布式缓存 (redis分布式缓存) 6.分布式全文检索 (solr分分布式全文检索) ...
随机推荐
- js 抽奖转盘实现
今天用js实现转盘抽奖功能,从后台返回的值可以固定转盘选择停止的任意位置 实现代码如下: js: <script> , i = ;//auto:时间对象 count:计数器 ,i : 计数 ...
- 蓝牙4.0——Android BLE开发官方文档翻译
ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...
- 面向服务的体系结构(SOA)——(3)关于BPM
什么是BPM 很多情况下企业当中所提供的服务不是由一个分布式业务流程就可以完成的,整个服务的提供需要多个分布式流程有机的组合,于是BPM就应运而生了.要将现有的服务通过配置.编排(关于配置与编排的区别 ...
- thinkphp验证码使用
在thinkphp中使用验证码很容易,只要调用thinkphp现有的方法就可以.当然,php的GD库肯定是要开的(就是在php.ini中要加载gd模块). thinkphp 3.1 --------- ...
- APP性能分析1
我们使用云测试平台对产品进行了性能测试,情况如下: 详见这里.
- 框架模式 MVC 在Android中的使用
算来学习Android开发已有2年的历史了,在这2年的学习当中,基本掌握了Android的基础知识.越到后面的学习越感觉困难,一来是自认为android没啥可学的了(自认为的,其实还有很多知识科学), ...
- Bash的基础知识man手册
Bash的基础知识man手册 由于基于Android类设备的渗透测试都是通过各类终端实现.所以掌握Shell相关操作就显得尤为重要.Bash是一个为GNU计划编写的Unix Shell本文选自基于An ...
- HDU1796 How many integers can you find(容斥原理)
题目给一个数字集合,问有多少个小于n的正整数能被集合里至少一个元素整除. 当然是容斥原理来计数了,计算1个元素组合的有几个减去2个元素组合的LCM有几个加上3个元素组合的LCM有几个.注意是LCM. ...
- CodeForces Round 198
总体感觉这次出的题偏数学,数学若菜表示果断被虐.不过看起来由于大家都被虐我2题居然排到331,rating又升了74.Div2-AA. The Walltime limit per test1 sec ...
- sql 关联查询
SELECT mms_sample_datas.* from mms_sample_datas where mms_sample_datas.mms_id in ( SELECT mms_sample ...