译者前言

本文翻译自<Visual Studio Performance Testing Quick Reference Guide 3.6> 有关于IP Switching的章节。<Visual Studio Performance Testing Quick Reference Guide>的最新版本可以从这里下载

IP地址切换 – 工作机制解析
每个代理(译者:指使用Visual Studio进行Load Test时,开启controller-agent模式下的agent)可分配最多达256个IP地址以供使用。测试开始时,代理服务在网卡上配置IP地址。测试运行时,新的连接循环地使用IP地址池中的地址。

IP Switching最常见的用途是针对负载均衡器。负载均衡器通常根据IP地址,将请求路由到服务器集群中某个特定的Web服务器。所以,如果你有2个代理把负载加载到3台Web服务器,因为所有的流量是来自两个IP地址(每个代理一个IP),那么只有两个Web服务器将得到所有流量。 IP Switching提供了一种方法,使同一个代理能够产生来自多个IP地址的流量,使负载均衡器能够在整个集群中平衡负载。

VSTT目前限制每个代理可以产生256个独立的IP地址。在大多数测试的情况下,这是足够多的地址。这种限制最可能会影响你的情况是,如果你正在运行的大型测试中,每一个用户必须拥有一个独立的IP地址,用于关联到诸如某种会话状态上。但这种情况并不常见。
在VS 2008中,没有办法有一个给定的虚拟用户使用相同的IP地址。即当IP switching开启时,如果一个给定的用户会多次从IP池中获取IP,那么随后的迭代中,可能会使用不同的IP地址。
在VS 2010中,Web测试引擎设法确保相同的用户将总是使用相同的IP地址,但不能保证一定能够如此。

如果想给每一个用户分配唯一的IP地址,最大的问题是,目前的IP Switching限制每个代理最多只能有256个IP地址,这意味着你也被限制每个代理最多只能有256个虚拟用户。一种解决方案是在一台物理机器上使用多个虚拟机来获取多个代理。

IP地址切换只能用于Web Tests

IP Switching功能不能用于单元测试。

用于IP切换的地址并不是永久设置的

当您选择在负载测试时,在每个代理机使用多个IP地址(称为IP地址转换或IP欺骗),大多数测试工具会要求你往机器的的网卡中添加这些IP地址,并且它们需要总是可用,并始终显示的机器上的。 VS允许您将一系列的IP地址直接设置在测试项目中。 然后当测试开始运行时,VS动态将这些地址添加到代理中;测试结束时从代理删除它们。如果您需要使用IP Swtching,设置使用控制器/代理机制是必需的。

如何设置IP Switching

IP Switching有两个部分需要设置。首先,你必须为Test Rig的代理设置IP Switching,然后你必须告诉Load Test自己,它应该开启IP Switching。以下步骤:

设置代理
1, 打开Test Rig管理对话框(Test-> Administer Test Controller) (译者:VS2012中 Load Test –> Manage Test Controllers)

2, 选中每个代理并且点击“Properties”

3,在对话框中填写正确信息(如下图中所示)

此处配置代理属性

设置Load Test

一旦Test Rig设置完成,你可以配置通过为Load Test配置正确的属性,来配置那个Load Test将实际使用IP Switching:

此处为Load Test启用IP Switching(在配置代理之后)

 

IP Switching功能Troubleshooting

1)确保在代理机器上,代理服务以管理员身份运行;这是必须的,因为代理服务会试图根据代理属性中的设置,将这些IP地址配置在指定的网卡上。而这么做是需要管理员权限的。

2)确保为代理服务器配置的所有IP地址中,没有任何一个已经被直接配置在指定的网卡上了。

3) 为代理服务启动verbose级别日志:

*编辑文件QTAgentService.exe.config: (位置:<Program Files>\Microsoft Visual Studio 9.0 Team Test Load Agent\LoadTest\QTAgentService.exe.config)

*修改 <add key="CreateTraceListener" value="no"/> 为 "yes"

*修改 <add name="EqtTraceLevel" value="3" /> 为 "4"
*重启Load Test代理服务

* 文件"VSTTAgent.log"将被创建在和QTAgentService.exe.config同一目录

*在日志配置为verbose的情况下重新运行load test, 在日志文件中查找包含这样文本的行:"Attempting to configure IP address:" , "Configured IP address:" . 它告诉你代理服务是否试图把IP地址配置为你所指定的. 如果你看到 "Configured IP address:" 行, 那么ip地址被成功指定了. 如果没有,那么应该有错误被日志记录.

如果你已经验证了以上步骤1&2没有问题,并且日志指示还是有IP地址配置失败,但是你没办法通过日志消息决定失败的原因(或者干脆就没有错误日志)。那么,在WebandLoad testing论坛递交一个新的主题,或者递交给微软的技术支持来获取更多帮助,在报告中提供你设置环境的有关细节,包括相关部分的日志文件。

4)确保你运行的load test启动了IP Switching:在load test编辑器上点击每个"Scenario"节点, 在属性窗口中,验证"IP Switching"属性被设置为True(一般来说默认设置为True,但是值得检查一下)

5)为代理进程开启verbose级别日志

如果步骤3中所创建的日志显示IP地址被成功配置,那么下一步就是检查代理进程日志来验证load test确实使用这些IP地址来发送请求.

为代理进程启动verbose级别日志:

*编辑文件QTAgent.exe.config (位置<Program Files>\Microsoft Visual Studio 9.0 Team Test Load Agent\LoadTest\QTAgent.exe.config)

*修改: <add key="CreateTraceListener" value="no"/> 为 "yes"

*修改 <add name="EqtTraceLevel" value="3" /> 为 "4"

* 文件"VSTTAgentProcess.log"将被创建在和QTAgent.exe.config同一目录

* 重新运行load test, 查找日志文件中类似的行:"Bound request on connection group M to IP address NNN.NNN.NNN.NNN", 如果verbose级别日志开启并且这样的行出现在日志文件中,IP Switching应该正常工作了。

6) 如果在步骤5中日志所显示的独立的IP地址的数量要少于所配置的数量,那么应该是因为你的load test被配置为连接池的连接数小于配置的IP地址数。如果是这样,你可以增加连接池的大小,或者切换到"Connection per User" 模式,在load test的"run settings"属性中设置.

 

本文由Binhua Liu原创翻译

Web Performance Test : IP切换/IP欺骗的更多相关文章

  1. 云计算之路-阿里云上:10:28-10:51云盾清洗以及IP切换引发的主站访问故障

    大家好,非常抱歉!今天10:28-10:51期间由于阿里云云盾流量清洗,以及切换IP后负载均衡的带宽跑满,影响了主站的正常访问,给您造成了很大的麻烦,请您谅解! 故障的过程是这样的: 10:28,我们 ...

  2. window自动切换ip的脚本

    因为总要切换ip,所以百度了一下脚本 如下http://jingyan.baidu.com/article/d2b1d1029d21b95c7e37d4fa.html 动态ip netsh inter ...

  3. 自用有线IP切换

    @echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※ @echo ※ ※ @echo ※ 本命令用于设置外网视频与内网打印切换IP地址 ※ @echo ※ ※ @echo ※ ※ @e ...

  4. Web Server PROPFIND Method internal IP Discosure

    Title:Web Server PROPFIND Method internal IP Discosure  --2012-11-09 09:47 Nessus扫描出来一个安全缺陷,Web Serv ...

  5. 随机切换IP和UA

    在爬虫爬取过程中,网站会根据我们的IP和UA去确认到底是浏览器操作还是爬虫在操作,所以,为了让爬虫不被网站禁止,随机切换Ip 和UA是很重要的,因为这个类在各个爬虫中经常要用到,所以可以自已维护一份随 ...

  6. 巧用批处理cmd快速切换IP地址

    如果你的笔记本经常在不同的地方使用,有些地方需要自动获取IP,而有些地方需要配置固定IP,每换一个地方都需要重新配置一遍,是不是感觉很麻烦呢? 下面介绍一种通过建立批处理文件来快速切换IP的方法: s ...

  7. 虚IP切换原理

    高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性.HA系统是目前企业防止核心计算机系统因故 ...

  8. Windows环境下使用Netsh命令快速切换IP配置

    不同的内网环境需要使用不同的IP配置,频繁切换令人发狂,因此搜索了快速切换IP配置的方法. Netsh interface IP Set address "以太网" Static ...

  9. IP切换小技巧

    说到这个问题很多人都有同感.公司一般使用的都是静态的IP(如图:使用下面的IP地址),而我们在外面是用的一般是动态获取的IP(如图:自动获得IP地址),因此就产生了一个问题,需要来回切换IP,也就是需 ...

随机推荐

  1. 一些常用的NLTK频率分布类中定义的函数

    fdist=FreqDist(samples)创建包含给定样本的频率分布fist.inc(sample)增加样本fdist['monstrous']计数给定样本出现的次数fdist.freq('mon ...

  2. 让你的网站秒开 为IIS启用“内容过期”

    让你的网站秒开,为IIS启用“内容过期” 什么是内容过期? 当用户第一次访问你的网站,浏览器从你的网站主机下载内容,如果用户第二次访问你的网站,浏览器从缓存读取内容.你知道浏览器从缓存读取网页有多快吗 ...

  3. Struts2基础学习总结

    引用自:http://www.cnblogs.com/jbelial/archive/2012/05/10/2486886.html Struts 2是在WebWork2基础发展而来的. 注意:str ...

  4. javascript:算法之斐波那契数列

    一 //1,1,2,3,5,8,13,21这个数列 斐波那契 数列(肥波哪弃) //得到第9项是几? /*******************************111111111递归的思想*** ...

  5. python中的Queue

    一.先说说Queue(队列对象) Queue是python中的标准库,可以直接import 引用,之前学习的时候有听过著名的“先吃先拉”与“后吃先吐”,其实就是这里说的队列,队列的构造的时候可以定义它 ...

  6. mysql开启慢查询

    linux下: 一.在mysql中查询是否开启了慢查询mysql>SHOW VARIABLES  LIKE '%slow%'; Variable_name     Valuelog_slow_q ...

  7. NET 框架基本原理透析⑵

    生成.打包.部署及管理应用程序与类型 要生成就离不开程,序集,程序集是包含一个或多个类型定义文件和资源文件的集合.在程序集包含的所有文件中,有一个文件用于保存清单.清单是另外一组元数据表的集合,其中主 ...

  8. idea使用心得(1)-快捷键用法

    快捷键: Ctrl+F12,可以显示当前文件的结构,Alt+7,可在左侧生成固定框体控件,适合类复杂的情况 Ctrl+Alt+O,优化导入的类和包 Ctrl+X,删除行 删除光标所在的哪一行,对尤其是 ...

  9. PL/SQL 存储函数和过程

    --存储过程 .不带参: create or replace procedure 存储过程名 as|is --说明部分 begin --执行的语句: end: 调用存储过程 execute 存储过程名 ...

  10. 【转】MySQL数据库MyISAM和InnoDB存储引擎的比较

    MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种.这里介绍关于这两种引擎的一些基本概念(非深入介绍). MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索 ...