LR中Vugen的多进程与多线程(脚本命令行)
Controller使用驱动程序(如mdrv.exe或r3vuser.exe)来运行Vuser。用户可以在Controller的run-time setting中选择Vuser的运行方式:多进程/多线程。
如果将每个Vuser作为一个进程运行,那么同一驱动程序将为Vuser的每个实例多次启动(并加载)到内存中。将同一驱动程序加载到内存中会占用大量的RAM(随机访问存储器)和其他系统资源。这会限制可在任何Load Generator上运行的Vuser数。
如果将每个Vuser作为线程运行,Controller将为每50个Vuser(默认情况下)仅启动驱动程序(如mdrv.exe--LG的核心)的一个实例。此驱动程序进程/程序启动多个Vuser,每个Vuser作为一个线程运行。这些线程Vuser共享父驱动器进程的内存的段。这样就不需要多次重新加载驱动程序/进程,并节约了大量内存空间,因此能够在一个Load Generator上运行更多 Vuser。
但是任何选择都是有两面性的:选择线程方式运行Vuser会带来一些安全问题。因为线程的资源是从进程资源中分配出来的,因此同一个进程中的多个线程会有共享的内存空间,这样可能会引起多个线程的同步问题,调度不好就会出问题,如A线程要用的资源就必须等待B线程释放,而B也在等待其他资源释放才能继续。这就可能出现这样的问题:同一个测试场景,用线程并发就会超时失败或报错,而用进程并发就没错。
mmdrv是mdrv的封套,mmdrv通常应用于一些协议(例如web http/html)中对内存进行优化应用,但实质上mmdrv在优化内存时会启动mdrv。二者都可以按以下命令格式来启动并运行测试脚本:
mmdrv/mdrv -usr <script. path>
如:C:\Program Files (x86)\HP\LoadRunner\bin\mdrv -usr D:\PCTest\test_baidu\test_baidu.usr
D:\LoadRunner78\bin\mdrv.exe
-usr D:\LR_Tests\C\get_attribute\get_attribute.usr
-out D:\LR_Tests\C\get_attribute\out
-time 1.5
-secondsInYear 30758400
-MrsCollins Charlotte
总结:
选择线程方式运行---消耗的资源少些,可以运行的并发用户数更多;但是存在安全问题,且相对进程方式不是很稳定。
选择进程方式运行---稳定,安全,但是消耗的资源更多,可以运行的并发用户数有限。
LR中Vugen的多进程与多线程(脚本命令行)的更多相关文章
- gplaycli—— 用于从 GooglePlayStore 中下载和管理 Apk 文件的命令行工具
gplaycli-- 用于从 GooglePlayStore 中下载和管理 Apk 文件的命令行工具 这个 GooglePlay市场 中 https://play.google.com/store/a ...
- Jenkins 脚本命令行应用总结
Jenkins脚本命令行应用总结 测试环境 Jenkins 2.304 脚本命令行入口 Jenkins主页→系统管理→脚本命令行 遍历项目 例子:获取所有自由风格项目及相关项目信息 def proje ...
- 批处理脚本命令行方式关闭Windows服务
对于一些不常用的Windows Services,可以通过设置其启动类型为"禁用"而将其关闭.这种关闭方式是长期性的,电脑重启之后仍然起作用. 有时候希望在批处理脚本里通过命令行方 ...
- Python多线程同步命令行模拟进度显示
最近在一个Python(3.5)的小项目中需要用到多线程加快处理速度,同时需要显示进度,于是查了些资料找到几个实现方法:线程池的map-reduce和Queue结合线程的实现.这里简单的实例介绍一下Q ...
- pycharm中可以运行的程序,在命令行中运行提示模块不存在的问题
运行模块(包含main函数的模块),在模块开头添加以下代码,原因是pycharm运行python脚本时,会自动添加以下代码,将当前库加入到系统库目录集合中,在命令行中运行需要手动添加import os ...
- oracle 中数据库完全导入导出:cmd命令行模式(转载)
http://www.3lian.com/edu/2012/12-01/47252.html Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库 ...
- 在C#中调用另一个应用程序或命令行(.exe 带参数)<zz>
在.net中使用system.diaglostics.Process可以用来调用另一个命令行或程序. using System.Diagnostics; 如果是dos Proces ...
- windows系统中,在当前目录下打开cmd命令行的两种方法
1.在当前路径地址栏中直接输入‘cmd’,然后回车. 2.在当前路径下,按住‘shift’键同时点击鼠标右键,点击“在此处打开Powershell”. 其实你会发现,两个命令行有很大的区别. cmd: ...
- loadrunner 运行脚本-命令行运行脚本
Loadrunner 运行脚本-命令行运行脚本 by:授客 QQ:1033553122 脚本所在目录 Run-time Settings->Additional Attributes设置 ...
随机推荐
- 调整Excel的打印线
- MATLAB学习笔记(六)——MATLAB数据分析与多项式计算
(一)数据处理统计 一.最大值和最小值 1.求向量的最大值和最小值 y=max(X); %返回向量X的最大值存入y,如果X中含有复数则按模最大的存入y [y,I]=max(X);%返回向量X的最大值存 ...
- [HTTP那些事] JSON数据
随着Android的发展,各路大神的贡献,我们可用的轮子越来越多.比如HTTP请求框架,有自家的Volley,Square的okhttp, async-http-lib, 还有聚合版的xUtils以及 ...
- Spring的qualifier标签
@Autowired是根据类型进行自动装配的.如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存 ...
- JVM的GC理论详解
GC的概念 GC:Garbage Collection 垃圾收集.这里所谓的垃圾指的是在系统运行过程当中所产生的一些无用的对象,这些对象占据着一定的内存空间,如果长期不被释放,可能导致OOM(堆溢出) ...
- http://www.open-open.com/lib/view/open1397274257325.html
http://www.open-open.com/lib/view/open1397274257325.html
- HashMap两种遍历数据的方式
HashMap的遍历有两种方式,一种是entrySet的方式,另外一种是keySet的方式. 第一种利用entrySet的方式: Map map = new HashMap(); Iterator i ...
- 【POJ】3255 Roadblocks(次短路+spfa)
http://poj.org/problem?id=3255 同匈牙利游戏. 但是我发现了一个致命bug. 就是在匈牙利那篇,应该dis2单独if,而不是else if,因为dis2和dis1相对独立 ...
- winform学习2-datagridview数据绑定
1.datagridview.clearSelection()清除默认的选中项 2.列数据显示,首先列必须是显示状态, 3.布局-单元格内文字内容居中显示,示例:外观-defaultCellStyle ...
- asp.net 微信企业号办公系统-流程设计--流程步骤设置-策略设置
策略设置包括当前步骤的流转方式,处理人员,退回策略等设置. 流转类型:当前步骤后面有多个步骤时,此类型选择可以决定后续步骤的发送方式. 1.系统控制:由系统根据您在线上设置的流转条件来判断该发送到哪一 ...