在大负载中使用LoadRunner进行负载测试()
在大负载中使用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进行负载测试()的更多相关文章
- loadrunner笔记(一):下载、安装loadrunner和负载压力测试概念说明
(一) 下载和安装 下载:(没账号的话得先注册一个账号) https://software.microfocus.com/en-us/products/loadrunner-load-testin ...
- Linux架构中代理服务器配置与负载均衡
本期内容概要 代理 负载均衡 内容详细 1.代理 1.主要作用: 将流量平均分配 2.代理的方式 01 正向代理 外部想要访问服务器 先找代理 找到之后还需要找服务器 应用:VPN 02 反向代理 外 ...
- 【转载】解决k8s中的长连接负载均衡问题
原文链接:一流铲屎官二流程序员[解决k8s中的长连接负载均衡问题] 长连接与短连接: 简介 长连接是指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测 ...
- 解决docker中使用nginx做负载均衡时并发过高时的一些问题
# 解决docker中使用nginx做负载均衡时并发过高时的一些问题 1.问题产生原因: 由于通过nginx作为负载均衡服务,在访问并发数量达到一定量级时jmeter报错. nginx日志关键信息:a ...
- NoSQL在大数据中的应用
一.序言 NoSQL是Not Only SQL的缩写,而不是Not SQL,指的是非关系型的数据库,它不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准.ACID属性.表结构等等.相比传统数据库 ...
- linux负载均衡(什么是负载均衡)
linux负载均衡(什么是负载均衡) 一.总结 一句话总结: 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用 ...
- Apache Hudi在医疗大数据中的应用
本篇文章主要介绍Hudi在医疗大数据中的应用,主要分为5个部分进行介绍:1. 建设背景,2. 为什么选择Hudi,3. Hudi数据同步,4. 存储类型选择及查询优化,5. 未来发展与思考. 1. 建 ...
- 负载均衡之基于L7负载
L7负载平衡 还有一种较为经常使用的负载平衡解决方式则是L7负载平衡.顾名思义,其主要通过OSI模型中的第七层应用层中的数据决定怎样分发负载. 在执行时.L7负载平衡server上的操作系统会将接收到 ...
- Nginx 负载均衡原理简介与负载均衡配置详解
Nginx负载均衡原理简介与负载均衡配置详解 by:授客 QQ:1033553122 测试环境 nginx-1.10.0 负载均衡原理 客户端向反向代理发送请求,接着反向代理根据某种负载机制 ...
随机推荐
- nginx源代码分析之内存池实现原理
建议看本文档时结合nginx源代码. 1.1 什么是内存池?为什么要引入内存池? 内存池实质上是接替OS进行内存管理.应用程序申请内存时不再与OS打交道.而是从内存池中申请内存或者释放内存到内存池 ...
- google的transformer模型的解释
参考这篇文章: https://blog.csdn.net/mijiaoxiaosan/article/details/73251443 看了下: 最核心的如下:其最重要的创新应该就是Self-Att ...
- 【数字图像处理】使用kmeans算法对TrueColor图片进行优化
实验的主要内容是将truecolor的图片通过一个优化算法得到其256色的最优表示.本实验采用kmean做算法对像素的色彩进行聚类的计算,分类得到一个色彩数为256的CodeBook,和一个包含有Co ...
- solr建立pdf/word/excel索引的方法
PS: 本文假设你已经成功的搭建了一个Solr服务器步骤如下:(1)准备好一份Solr的源码,假设现在保存在c:\apache-solr-1.4.1\目录下(2)从https://issues.apa ...
- vue项目实现列表页-详情页返回不刷新,再点其他菜单项返回刷新的需求
问题背景:有时候一些列表会有一些跳转的需求,比如跳到详情页.或者是其他相关的页面(比如跳到用户列表去查看用户的相关信息)等,此时再返回列表页,列表页会刷新重置.目前需求就是需要改成如下情况: 问题1. ...
- 简单使用Google Analytics监控网站浏览行为
之前对网页做用户转化率调查这块,找到了谷歌GA事件,现在有时间对使用方法和遇到问题做个简单记录.官方文档其实也介绍的比较清楚,可以查看官方文档. 首先,在官网申请UA-id,然后在主页加入如下代码: ...
- 在centos7.4上安装mysql5.5
from: https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-7
- (NGUI)UISprite 切换图集
UISprite是可以使用代码动态切换图集的 using UnityEngine; using System.Collections; public class SpriteAtlasTest : M ...
- 使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别
这是一篇国外的文章,介绍如何通过 WebRTC.OpenCV 和 WebSocket 技术实现在 Web 浏览器上的人脸识别,架构在 Jetty 之上. 实现的效果包括: 还能识别眼睛 人脸识别的核心 ...
- python 读取单所有json数据写入mongodb(单个)
<--------------主函数-------------------> from pymongo import MongoClientfrom bson.objectid impor ...