负载测试中的网络模拟疑难解答
本主题中的疑难解答信息适用于负载测试的网络仿真,而且在 Microsoft Visual Studio 2010 旗舰版中的负载测试的网络类型不是局域网 (LAN)。 在“编辑网络组合”对话框中,可以将负载测试配置为使用下列网络类型:
LAN(默认设置,不适用于此疑难解答主题)
3G
Cable-DSL-1.5Mbps
Cable-DSL-768k
Cable/DSL-384k
CDMA
拨号,56k
洲际慢速 WAN 300 Kbps
洲际 WAN 1.5 Mbps
洲内 WAN 1.5 Mbps
有关更多信息,请参见 如何:使用“新建负载测试向导”创建网络组合和在负载测试方案中指定虚拟网络类型。
真实网络仿真
Microsoft Visual Studio 2010 对所有测试类型使用基于软件的真实网络仿真。其中包括负载测试。 真实网络仿真通过直接操作网络数据包来模拟各种网络情况。 真实网络仿真程序通过使用可靠的物理链接(如以太网)可模拟有线和无线网络的行为。 下列网络特性加入到了真实网络仿真中:
通过网络的往返时间(延迟)
可用带宽量
排队行为
数据包丢失
数据包的重新排序
错误传播
真实网络仿真还提供在基于 IP 地址或协议(如 TCP、UDP 和 ICMP)筛选网络数据包方面的灵活性。
基于网络的开发人员和测试人员可以使用真实网络仿真来模拟所需的测试环境,评估性能,预测更改的影响或做出有关技术优化的决策。 与硬件测试台相比,真实网络仿真是一个更廉价、更灵活的解决方案。
网络仿真在负载测试中如何工作
若要在负载测试中使用网络仿真,必须安装 Microsoft Visual Studio 2010 旗舰版。 使用“编辑网络组合”对话框可以配置网络仿真。 通过“新建负载测试向导”或通过在负载测试中右击现有方案然后单击**“编辑网络组合”**可显示此对话框。
开始负载测试时,它会为您在网络组合(例如,DSL 和 56.K 调制解调器)中选择的每个网络配置文件分配一系列可用端口。 此端口范围可供在运行时启用的网络仿真驱动程序使用(默认情况下,会禁用网络仿真驱动程序)。
在负载测试期间,当负载生成器向受测应用程序发送请求时,它会从端口范围中指定一个端口。 当网络仿真驱动程序从选择端口范围中检测到此端口时,它会将此端口与此请求应遵循的网络配置文件相关联。 这样,驱动程序便可限制软件中的负载,从而确保其满足选定的网络配置文件。
如何知道网络仿真不起作用
通常,您会看到这样一种症状:负载测试在日志中记录套接字异常,如下所示:
"The requested address is not valid in its context xx.xx.xx.xxx:80"
提示
其他条件也会引起此类套接字异常。 负载测试可能会继续工作,但会记录套接字异常。 下一节将帮助您隔离和解决这个问题。
如何解决网络仿真问题
若要有效地解决和隔离问题,必须确保已完成基本测试。
验证参与负载测试的所有计算机是否都具有完全网络连接。
通过遵循说明和验证管理员权限是否可供测试代理使用来确保已正确配置网络仿真。
进行疑难解答时检查是否已禁用所有防火墙,以确保防火墙未阻止特定端口或网络中的流量。
确保负载生成器计算机中的任何病毒软件都不阻止此软件。
若要确定问题是网络仿真驱动程序的问题还是负载测试组件的问题,请执行以下步骤:
从原因中排除网络仿真驱动程序:
正确配置网络仿真后运行负载测试,即使可能会看到套接字异常。
Ping 另一台主机,以确定输出是否显示网络速度下降、更长时间的延迟或同时显示两者。 检查延迟值是否与选定的网络配置文件匹配。 如果延迟值与您选定的配置文件匹配,则表明网络驱动程序工作正常。
从运行负载测试的测试代理计算机中,尝试连接到外部的任何主机,如您喜欢的网页。 此测试验证,在运行负载测试和启用网络驱动程序时,外部或实验室连接不是问题。 这将从问题区域中排除网络仿真驱动程序。
从原因中排除负载测试组件:
可在负载生成器所在的同一计算机(测试代理计算机)上下载并运行 Sendrequests.exe。 Sendrequests.exe 是可在网络仿真负载测试期间解决套接字异常的示例程序。
警告
Microsoft 不支持 Sendrequests.exe 程序。
此示例程序模拟与负载测试组件中使用的完全相同的一组套接字连接调用。 如果此测试程序也显示套接字异常,则可从套接字异常的原因中排除负载测试产品。 套接字异常还表明,问题出现在环境、计算机、网络中或工具之外的项目中。
请先调试外部问题,然后再次尝试运行负载测试。
如果此示例程序运行正常,您会看到下图所示的输出。 此输出将确认,问题可能出现在负载测试程序中,环境不是可能的原因。
Sendrequests.exe 成功输出
IPSEC 与网络仿真不兼容
如果启用 IPSEC,将对网络数据包中的端口加密。 因此,网络仿真驱动程序将无法确定数据包来自前面的网络仿真在负载测试中如何工作中介绍的负载测试引擎所设置的指定端口范围。 必须禁用 IPSEC,网络仿真才能工作。