见 http://www.51testing.com/?uid-97659-action-viewspace-itemid-210924

  LoadRunner以下简称(LR)是目前业界最流行的压力测试工具,广泛地应用于电信、金融、电力行业。LR安装后文件非常大,这也说明LR是个强大复杂的工具。LR入门的介绍在网上有很多好的文章,它们都很好的介绍了工具的使用。但是对于很多行业级应用,使用LR会同时运行很多虚拟用户数(1000+),本文针对这样的测试类型介绍了一些需要考虑的问题和解决方法,希望给同行一些帮助。

  第一步:配置系统参数

  大并发用户的情况下,会出现如下问题:

  1)        当采用netstat命令时,看到很多Socket处于“WAIT”状态

  2)        负载增大时连接失败

  3)        mmdrv的句柄数 随着虚拟用户的运行而增加

  4)        当建立连接时出现"No buffer space available"错误信息

  解决方法

  编辑以下注册表项:

  1)        设置

  “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par

  ameters\TcpTimedWaitDelay” 为30

  2)        设置

  “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Par

  ameters\MaxUserPort”为65534

  3)        设置

  “HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session

  Manager\Sub Systems\Windows” 为SharedSection为4096

  4)        脚本的第一行加上web_set_sockets_option(“SHUTDOWN_MODE”,”ABRUPT”)函数将SHUTDOWN_MODE从默认模式GRACEFUL改为ABRUPT

  第二步:配置LR

  1)        脚本运行时设置

  ●       消息处理时勾选"send message only when error occurs"

  ●       禁用snapshot on error

  ●       "define each step as a transaction"取消勾选

  ●       取消"simulate browser cache"勾选, 勾选“simulate new user on each iteration”和它的子选项

  2)        将脚本中web_url函数中的"Mode=HTML"默认方式改为"Mode=HTTP",这将减小LG机器上的压力(不解析HTML)

  3)        将在controller的diagnostics->configuration中,禁止web page breakdown

   4)        在Controller通过Tools > Options > Run-Time Settings限制同一时间在所有LG上初始化虚拟用户的数值,设置会被每台LG获得,这样做的目的是为了避免在脚本执行的初始阶段LG系统资源的过度 利用.

  5)        修改系统目录下的wlrun7.ini限制测试运行时controller存储的错误数量,在[output]选项中,作如下修改

  FlagLimitOutputMessages=1

  MaxNumberOfOutputMessages=<errors count> (默认为10000)

  6)        在Controller通过Tools>Options>Monitors修改monitor的采样率,这将减小测试运行时Controller的CPU利用率,如下图所示:

  7)        修改wlrun7.ini中的ExportMessagesToFile=1重定向输出信息到.txt文件而不是到MDB文件

  此外:关闭Controller和LG上的防病毒,防间谍软件,关于运行在以上电脑上不要的Windows服务;在Controller不要运行虚拟用户;不要频繁打开Error/Output窗口,因为这将增加额外Controller上额外的数据库连接数这些都是对进行成功的大负载测试的有益的建议。

  第三步:修改脚本

  1)        在负载测试时,保证Controller和Generator的网络通信非常重要,大量的信息(error message,output message)大并发负载测试有着很大的负面影响

  如以下两例

  ------------------示例1-----------------------

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

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

  ------------------示例2-------------------------

  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("Request_Content_Page", LR_FAIL);

  }

  -----------------------------------------------------------------------------

  这些语句都仅仅应该出现在脚本调试时而不应该出现在负载测试时的脚本中,在正式的负载测试前,注释掉这些语句。

  2)        把脚本中sleep()函数改为lr_think_time()函数,lr_think_time将控制权交还给LR,这意味着LR可以做其他事情。不要忽略lr_think_time,适用参数值以模拟更精确的负载同时也可减小LG的压力。

  3)        在web_reg_save_param函数 添加 “Notfound=empty”

  第四步:设置组策略

  大负载测试时会有以下情况发生

  ●       产生很多错误,数据量大于1GB

  ●       假如每秒产生1000条左右错误的话,Controller的行为将很难预测

  ●       压力测试产生很多运行数据

  这些问题可以通过设置一个合理的组策略避免,以下举一个例子说明

  场景为1000个虚拟用户,用一个Group运行

  这时把这个Group分为两个Group:

  G1-〉100 Vusers

  G2-〉900 Vusers

  在G2的设置中,添加以下命令行:

  –disable_data -disable_messages

  -disable_data – 指示Group不要发送和写入运行数据

  -disable_messages – 指示Group不要发送任何信息(errors,logs)给Controller

  结尾语:单从测试而言,SilkPerformer和QALoad以及其他开源工具皆可实现压力测试的目的,本文介绍的内容从方法上对于其他工具也适用,但实现细节会略有差别。祝大家成功!

LodRunner实现大负载测试的四部曲(配置系统参数、配置LR、修改脚本、设置组策略)的更多相关文章

  1. 使用JMeter进行Apache Kafka负载测试

    1.卡夫卡负载测试 在这个Apache Kafka教程中,我们将了解如何使用Apache JMeter,如何在Apache Kafka上执行Kafka负载测试.此外,这个Kafka负载测试教程教我们如 ...

  2. JMeter进行Apache Kafka负载测试

    1.卡夫卡负载测试 在这个Apache Kafka教程中,我们将了解如何使用Apache JMeter,如何在Apache Kafka上执行Kafka负载测试.此外,这个Kafka负载测试教程教我们如 ...

  3. AWS EC2+Docker+JMeter构建分布式负载测试基础架构

    目录 概述及范围 前提条件 Part 1: Local setup-本地配置 Part 2: Cloud端基础架构--Infrastructure 总结: 原文链接 @ 概述及范围 本文介绍有关如何使 ...

  4. 通过windows组策略配置时间同步

    Windows系统中带有NTP服务器和客户端的程序,只需在Windows中简单配置即可实现电脑之间的时间同步. 网上常见的配置NTP服务器的方法是修改系统注册表,这种方法是微软不推荐的.在实际使用中, ...

  5. 在大负载中使用LoadRunner进行负载测试()

    在大负载中使用LoadRunner进行负载测试,需要配置一些环境来满足大负载下各种资源的充足: 1.为了避免出现“No Buffer Space Available”的错误,需要进行如下配置: 1)修 ...

  6. 如何配置visual studio 2013进行负载测试-万事开头难

    声明:工作比较忙,文章写得不好,有时间再整理. 起因:最近众包平台因迁移到azure之后一直有网站慢的情况,让老板挨批了,但是测试环境一切正常,而且生产环境也没发现有卡顿和慢的情况,所以干脆来一次负载 ...

  7. 转:能和LoadRunner匹敌的VS2010/2012Web负载测试

    原文出处:http://www.cnblogs.com/aarond/archive/2013/04/18/performance.html VS自带的Web负载测试真的很大程度上能和专业的loadr ...

  8. 性能测试vs负载测试vs压力测试-概念普及

    下面我们主要介绍性能测试.负载测试和压力测试. 效率作为ISO 9126内部和外部质量的重要质量属性之一,其含义是在规定条件下,相对于所用的资源的数量,软件产品可提供适当性能的能力.资源可能包括其他软 ...

  9. linux下负载均衡(LVS安装与配置)【转】

    一.LVS的三种包转发方式      LVS提供了三种包转发方式:NAT(网络地址映射).IP Tunneling(IP隧道).Direct Routing(直接路由)     不同的转发模式决定了不 ...

随机推荐

  1. 1、第一个JSP

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" ...

  2. 【CI3.1】CI框架简单使用方法

    CI框架简单使用方法 1.回忆MVC 1.1.M:模型,提供数据,保存数据 1.2.V:视图,只负责显示,表单form 1.3.C:控制器,协调模型和视图 1.4.action:动作,是控制器中的方法 ...

  3. IO多路复用之poll

    1.基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制.poll和selec ...

  4. 搜狐畅游CEO王滔辞职

    凤凰科技讯 11月3日消息,搜狐公布公告确认搜狐畅游CEO离职.公告称王滔因个人原因辞去畅游首席运行官职务.将继续担任畅游公司董事和首席产品官. 据搜狐公告,董事会任命搜狐总裁余楚媛与畅游总裁陈德文为 ...

  5. 什么是Coded UI

    什么是Coded UI Coded UI Test是Visual Studio 2010对于Testing Project(测试工程)提供的关于UI自动化测试的框架,支持Win32,Web,WPF等U ...

  6. 转 多线程 闭锁(Latch) 栅栏(CyclicBarrier)

    java多线程并发系列之闭锁(Latch)和栅栏(CyclicBarrier) 标签: java并发编程 2015-05-28 16:45 2939人阅读 评论(0) 收藏 举报 本文章已收录于: . ...

  7. Rust 1.7.0 处理命令行參数

    std是 Rust 标准函数库: env 模块提供了处理环境函数. 在使用标准函数库的时候,使用 use 导入对应的 module . 一.直接输出 use std::env; fn main(){ ...

  8. redis基础之订阅发布、主从复制和事务(四)

    前面已经学习了redis的基本的命令行操作和数据类型,下面开始redis一些有趣的功能. 订阅和发布机制 定义:发布者相当于电台,订阅者相当于客户端,客户端发到频道的消息,将会被推送到所有订阅此频道的 ...

  9. Android四大组件全然解析(一)---Activity

    本文參考\android\android\frameworks\base\core\java\android\app\Activity.java文件里的类凝视.以及android/frameworks ...

  10. location 符号

    元字符 描述 \ 将下一个字符标记符.或一个向后引用.或一个八进制转义符.例如,“\\n”匹配\n.“\n”匹配换行符.序列“\\”匹配“\”而“\(”则匹配“(”.即相当于多种编程语言中都有的“转义 ...