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分分布式全文检索) ...
随机推荐
- ytu 2030: 求实数绝对值(水题)
2030: 求实数绝对值 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 10 Solved: 10[Submit][Status][Web Board] ...
- oracle sql developer数据表注释为乱码问题---解决
参考网址:http://blog.163.com/jackie_howe/blog/static/19949134720121126879265/ 内容: 在windows中创建一个名为“NLS_LA ...
- 简单灵活的 PHP页面跳转函数
<? function Location($url = ,) == ,) === ,) === ) { $pro ...
- 如何在ASP.NET 5和XUnit.NET中进行LocalDB集成测试
今天继续昨天的话题--单元测试,不过是在ASP.NET 5中的单元测试. 在当前的Visual Studio 2015 CTP6中,MSTest是不支持对ASP.NET 5项目进行单元测试的.因而,要 ...
- 51NOD 1623 完美消除 数位DP
题目描述: 定义数的消除操作为选定[L,R,x],如果数的第L到第R位上的数字都大于等于x,并且这些数都相等,那么该操作是合法的(从低位到高位编号,个位是第一位,百位是第二位……),然后将这些位数上的 ...
- Codeforces Round #313 (Div. 2) D. Equivalent Strings
D. Equivalent Strings Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/559/ ...
- sql server存儲過程語法
-- 变量的声明,sql里面声明变量时必须在变量前加@符号 DECLARE @I INT -- 变量的赋值,变量赋值时变量前必须加set SET @I = 30 -- 声明多个变量 ...
- 【log4j2 加载配置文件】 加载配置文件的三种方法
log4j 2读取的配置文件可以分为三类:src下的配置文件.绝对路径的配置文件.相对路径的配置文件. package com.herman.test; import java.io.File; im ...
- [转载]有了 malloc/free 为什么还要 new/delete ?
malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++的运算符.他们都可以用于申请动态内存和释放内存. 对于非内部数据类型的对象(如类对象)而言,光用m ...
- LCS(滚动数组) POJ 1159 Palindrome
题目传送门 题意:一个字符串要变成回文串至少要插入多少个字符 分析:LCS,长度 - 原串和反串的最大相同长度就是要插入的个数.解释一下,当和反串相同时,在原串中已经是回文的部分了,那么减去LCS长度 ...