在大负载中使用LoadRunner进行负载测试,需要配置一些环境来满足大负载下各种资源的充足:

1.为了避免出现“No Buffer Space Available”的错误,需要进行如下配置:

1)修改注册表:

* 设置“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par

ameters\TcpTimedWaitDelay”为 30

      * 设置“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par

ameters\MaxUserPort”为 65534

      * 在“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session

Manager\Sub Systems\Windows”设置SharedSection 为 4096

2)通过在每个脚本的开头添加如下函数来设置“SHUTDOWN”模式为"ABRUPT"

web_set_sockets_option(“SHUTDOWN_MODE”,”ABRUPT”)

2.关闭所有的杀毒,反间谍扫描软件等。同时也关闭任务扫描和所有不需要的服务。

3.脚本运行时设置:

1)设置日志为“只在错误发生时发送信息”

2)去掉错误时产生snapshot的选项

3)在miscellaneous上,去掉 定义每一步为一个事务 的选项

4)不选择 模拟浏览器缓存,选上“simulate new user on each iteration”和它的子选项

4.如果下载的页没有资源,在web_url函数中添加“Mode=HTTP”,这样会减少LG上的负载(不用转换成HTML)。默认情况下,web_url的Mode为Mode=HTML

5.重启LG并且确保他们都能跟Controller连接.

6.确保LG和控制器上有足够的剩余磁盘空间.

7.在controller中去掉web page breakdown

8.限制Vuser在所有LG上同时进行初始化的数目.可以在Controller的Tools > Options > Run-Time Settings中进行修改.每个LG都有这个设置.

9.限制controller在运行时存储的错误数.通过修改wlrun.ini中的[output]项来实现:

• FlagLimitOutputMessages=1

  • MaxNumberOfOutputMessages=<errors count> (default is 10,000)

10.在Controller上修改Monitor的采样率来降低CPU的使用.可以在Controlller的Tools > Options > Monitors 下修改,如下图所示:

11. 如果有很多错误产生,最好不要经常打开Error/Output窗口,因为这样会因为访问数据库而打开另外的数据库连接.

12.负载测试中不要使用"Show Vuser"选项.

13.把输出信息重定向到一个文本文件中来代替输出到mdb文件中.可以在wlrun7.ini中修改[output]下的

ExportMessageToFile=1来实现.

14.不要在Controller机器上运行虚拟用户.

15.在场景中设置监视器:

* 内存使用上 mmdrv进程的private bytes

* disk使用

* CPU使用

* 网络使用

16.把脚本中所与打印信息的脚本去掉.如下面的代码每次迭代都会调用一次,对大量并发用户的运行产生负面的影响.

lr_vuser_status_message("pIteration: %s -

START Action", lr_eval_string("{pIteration}"));

lr_output_message("pIteration: %s - START Action", lr_eval_string("{pIteration}"));

Controller处理所有虚拟用户的信息,这样会大大降低Controller的性能. 如下是类似的代码:

web_reg_find("Text=Time on Server", "SaveCount=cErr", ..);

web_url( some url …);

if (atoi(lr_eval_string("{cErr}"))>0) {

lr_error_message(some message);

lr_end_transaction("S05_T01_Request_Content_Page", LR_FAIL);

}

通常认为在脚本中插入lr_error_message是不好的,除非是调用的客户化的API失败了才有必要插入该语句.如果是LoadRunner的函数调用失败(如上面的web_url调用),它会自动发送一个错误消息.

在大量用户运行的情况下,控制Controller和LG之间的通信流量是非常重要的.发送多余的信息(错误,输出等信息)会增大通信流量降低负载能力.所以,通常都需要把代码中不必要的信息去掉.

17.去掉脚本中所有的sleep()的调用,用lr_think_time()来代替.lr_think_time给LR让出控制,即LR能够在Vuser休眠的时候去做其他有用的事情.

18.不要去掉lr_think_time:使用该函数能更准确的模拟负载,对LG产生相对小的压力

19.web_reg_save_param和web_reg_find()函数:

• 在 web_reg_save_param() 中添加“Notfound=empty” 参数.

   • 在 web_reg_find() 添加 "Savecount=some_parameter_name". 如果你想知道它是否成功可以使用atoi(lr_eval_string("{some_paramater_name }"))来衡量.

20.其他

可能会出现的问题:

* 测试产生了太多的错误:

错误引擎不能处理多于1.5GB的错误

如果测试过程中每秒产生多与1000个错误,Controller的行为将不可预测

* 测试产生了大量的在线数据

上面的两个问题都可以使用如下的方法解决:

例如: 场景是一个组有1000个虚拟用户

可以把这个组分成两个组:

G1 100 Vusers

   G2 900 Vusers

这两个组可以跟原始的组产生一样的负载,对于G2在组命令行中添加如下参数:

-disable_data -disable_messages

_disable_data : 让这个组不发送任信息,不发送任何online信息,不写任何offline信息.

_disable_message: 让这个组不给Controller发送任何信息(错误,日志)

注意:使用上面的命令行选项会使该LG不给congtroller发送online和offline信息.这样这个组上的虚拟用户的分析数据就收集不到了.

21.如果需要远程访问,Mercury仅支持PC anywhere.

翻译自<LoadRunner Large Load Test Considerations>

在大负载中使用LoadRunner进行负载测试()的更多相关文章

  1. loadrunner笔记(一):下载、安装loadrunner和负载压力测试概念说明

    (一)   下载和安装 下载:(没账号的话得先注册一个账号) https://software.microfocus.com/en-us/products/loadrunner-load-testin ...

  2. Linux架构中代理服务器配置与负载均衡

    本期内容概要 代理 负载均衡 内容详细 1.代理 1.主要作用: 将流量平均分配 2.代理的方式 01 正向代理 外部想要访问服务器 先找代理 找到之后还需要找服务器 应用:VPN 02 反向代理 外 ...

  3. 【转载】解决k8s中的长连接负载均衡问题

    原文链接:一流铲屎官二流程序员[解决k8s中的长连接负载均衡问题] 长连接与短连接: 简介 长连接是指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测 ...

  4. 解决docker中使用nginx做负载均衡时并发过高时的一些问题

    # 解决docker中使用nginx做负载均衡时并发过高时的一些问题 1.问题产生原因: 由于通过nginx作为负载均衡服务,在访问并发数量达到一定量级时jmeter报错. nginx日志关键信息:a ...

  5. NoSQL在大数据中的应用

    一.序言 NoSQL是Not Only SQL的缩写,而不是Not SQL,指的是非关系型的数据库,它不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准.ACID属性.表结构等等.相比传统数据库 ...

  6. linux负载均衡(什么是负载均衡)

    linux负载均衡(什么是负载均衡) 一.总结 一句话总结: 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用 ...

  7. Apache Hudi在医疗大数据中的应用

    本篇文章主要介绍Hudi在医疗大数据中的应用,主要分为5个部分进行介绍:1. 建设背景,2. 为什么选择Hudi,3. Hudi数据同步,4. 存储类型选择及查询优化,5. 未来发展与思考. 1. 建 ...

  8. 负载均衡之基于L7负载

    L7负载平衡 还有一种较为经常使用的负载平衡解决方式则是L7负载平衡.顾名思义,其主要通过OSI模型中的第七层应用层中的数据决定怎样分发负载. 在执行时.L7负载平衡server上的操作系统会将接收到 ...

  9. Nginx 负载均衡原理简介与负载均衡配置详解

    Nginx负载均衡原理简介与负载均衡配置详解   by:授客  QQ:1033553122   测试环境 nginx-1.10.0 负载均衡原理 客户端向反向代理发送请求,接着反向代理根据某种负载机制 ...

随机推荐

  1. Table does not have the identity property. Cannot perform SET operation.

    Table   does not have the identity property. Cannot perform SET operation. 解决:   set IDENTITY_INSERT ...

  2. Windbg命令学习15(bp bm bu bl bc ba断点)

    以下以skinhgy为例,windbg附加运行 1. bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction . 对于后者,WinDBG 会 ...

  3. Linq to Sql并发冲突及处理策略

    0. 并发冲突的示例 单用户的系统现在应该比较罕见了,一般系统都会有很多用户在同时进行操作:在多用户系统中,涉及到的一个普遍问题:当多个用户“同时”更新(修改或者删除)同一条记录时,该如何更新呢?   ...

  4. git版本还原

    本地还原 在确认需要进行版本还原以后, 打开GIT BASH 输入: git reset --hard ad76ebf5ba8fb12bc38300ee99db478b332c1f7b 此操作成功以后 ...

  5. js 正则表验证输入

    输入1-9的整数 <input type="text" class="form-control" style="width: 60px;disp ...

  6. 在Linux下锁住键盘和鼠标而不锁屏

    假如在你正看着屏幕上的某些重要的事情时,你不想让你的小猫或者小狗在你的键盘上行走,或者让你的孩子在键盘上瞎搞一气,那我建议你试试 xtrlock 这个工具. 假如在你正看着屏幕上的某些重要的事情时,你 ...

  7. Spring(十五):通过注解配置 Bean

    在ClassPath中扫描组件 1)组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件: 2)特定组件包含: --- @C ...

  8. wamp设置自定义域名访问php网站

    wamp是一个在window系统下很不错的php开发套件,一般我都是使用此套件在本地进行开发和测试的 特别是alias功能特别好,可以同时开发N个php网站而不互相影响 但alias有一个问题,它其实 ...

  9. Is there anyway to discover which ip addresses are connected to the db?

    From mongo shell run db.currentOp() to show all active connections or db.currentOp(true) to show all ...

  10. lvs 隧道模式请求没有回应的解决

    众所周知,lvs共有三种转发机制:NAT,IPTUNNELING与DIRECT ROUTING 我在做隧道模式实验时遇到了一个问题,客户端向虚拟ip(即隧道0的ip)发送请求后,lvs服务器接收到了请 ...