在Azure中使用Load Runner测试TCP最大并发连接数
对于Azure中的每一台虚机,它所能支持的TCP最大并发连接数是50万(参考微软官网: http://azure.microsoft.com/en-us/documentation/articles/azure-subscription-service-limits/#networkinglimits)。在绝大部分情况下,应用程序不会触及这一限制,从而感觉不到这个限制的存在。但是,在一些极端情况,例如我们设计这样一个测试案例:在Azure中创建一台虚机,并安装Nginx服务器。使用多台Load Runner客户端,持续向Azure中的这台服务器发送HTTP请求。当Load Runner的客户端机器个数足够多,并且网络环境良好,这样的测试有可能会达到50万并发连接数的限制。
为什么会有这个限制?有如下原因:
1. Azure作为公有云平台,是一个共享的平台。我们不希望个别用户或者虚机,占用了绝大部分的平台资源。这样,对平台上的其他用户是不公平的。
2. 根据我们的调研,绝大部分应用程序在这个限制下完全可以正常工作。
如果应用程序需要比50万更多的并发连接怎么办?解决方案如下:
1. 横向扩展应用服务器。例如一台服务器支持50万,那么两台就是100万。这个数字跟随机器数的增加而线性增长。
2. 调整建立TCP连接的方法。例如建立长连接或连接池。
下面,我们详细讲解一个测试案例,供读者参考。
测试案例分享:
硬件环境:
在同一个公有云平台的区域中,使用1台2核虚拟机作为服务器, 4台4核的虚拟机作为客户端分别对服务器进行压力测试。
软件环境:
在服务器上,运行Ubuntu 操作系统。此外安装Nginx 1.4.6作为Web Server。统一部署一个4个字节的index.html文件,用作测试网页的下载。

在客户端上,运行Windows操作系统, 安装HP Load Runner 11,针对服务器的地址进行压力测试。每台客户端上,Load Runner 模拟200个用户同时向服务器发送5分钟请求,获取所有的事务tps信息,包括成功,失败和中止。

在Load Runner下,编写如下脚本进行测试。其中[URL]的部分根据不同的环境进行修改。
Action()
{
web_url(“webserver",
"URL=[URL]",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
return 0;
}
例如:

网络环境:
笔者通过两种方式进行了这项测试,得到同样的测试结果。第一种方式,我们将Load Runner安装在Azure平台的虚机中。第二种方式,通过本地数据中心的Load Runner向Azure中的虚机发起请求。网络拓扑结构如下。请注意,这里画出的四台客户机只是示意,在实际的测试中,我们使用了2台、4台、6台和8台的多种场景。

测试结果:
在测试初期,我们将Load Runner跑在Azure中,得到了如下的TPS图形。
从上面的途中我们在一台Load Runner中看到,当每秒处理的事务数达到430的时候(这时我们共有6台机器,服务器端的TPS在430x6=2500TPS左右),服务器突然不接受任何新的请求,TPS骤然间变成了0。经过排查,我们发现该测试触及了另一个限制 - 每个云服务开放的TCP源端口不得超过64000。

要绕开这一限制,有两个方法:
1. 将Load Runner放到不同的云服务中。
2. 为每台测试机指定Public IP。http://msdn.microsoft.com/en-us/library/azure/dn690118.aspx
为虚机指定了Public IP后,或者使用本地机房的物理机所谓客户端,我们即得到了下面的测试结果:

上面的测试持续1小时9分钟,我们并没有发现TPS骤降的现象。这一现象说明,在我们的测试中,服务器的50万并发连接限制没有影响客户端的结果,从而也不会影响客户体验。
结论:
在实际的应用程序设计中,我们可以根据具体的应用程序场景,运用本文谈到的测试方法,来得到系统的指标 - 一台服务器可支持的并发事务处理数(TPS)。通常,服务器处理的瓶颈并不在于TCP并发连接数,而是系统的处理能力,例如数据库查询等。接下来,我们需要检验自己的应用程序是否可以横向扩展,通过增加多台服务器,比较测试结果,我们就可以了解横向扩展的性能变化。根据这两个指标(单台机器处理能力,横向扩展性能指标),我们就可以预估系统的规模。
本文转载自:http://blogs.msdn.com/b/cciccat/archive/2014/08/18/azure-load-runner-tcp.aspx
在Azure中使用Load Runner测试TCP最大并发连接数的更多相关文章
- 测试TCP/IP配置
安装网络硬件和网络协议之后,我们一般要进行TCP/IP协议的测试工作,那么怎样测试才算是比较全面的测试呢?我们认为,全面的测试应包括局域网和互联网两个方面,因此应从局域网和互联网两个方面测试,以下是我 ...
- 在Azure中的Ubuntu中安装Open edX
最近,由于工作原因,在Azure上的Ubuntu虚拟机中安装了Open edX 实例,安装过程遇到了不少问题, 在从网上找答案的过程中,学习到了不同的知识. 注:若Ubuntu虚拟机Setup在Glo ...
- tsung压力测试——tcp测试tsung.xml配置模版说明
<?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1 ...
- 如何使用 Packer 在 Azure 中创建 Windows 虚拟机映像
Azure 中的每个虚拟机 (VM) 都是基于定义 Windows 分发和操作系统版本的映像创建的. 映像可以包括预安装的应用程序和配置. Azure 应用商店为最常见的操作系统和应用程序环境提供了许 ...
- 在 Azure 中的 Windows 虚拟机上使用 SSL 证书保护 IIS Web 服务器
若要保护 Web 服务器,可以使用安全套接字层 (SSL) 证书来加密 Web 流量. 这些 SSL 证书可存储在 Azure Key Vault 中,并可安全部署到 Azure 中的 Windows ...
- 详细故障排除步骤:针对 Azure 中到 Windows VM 的远程桌面连接问题
本文提供详细的故障排除步骤,用于为基于 Windows 的 Azure 虚拟机诊断和修复复杂的远程桌面错误. Important 若要消除更常见的远程桌面错误,请务必先阅读远程桌面的基本故障排除文章, ...
- 对连接到 Azure 中 Linux VM 时出现的问题进行详细的 SSH 故障排除的步骤
有许多可能的原因会导致 SSH 客户端无法访问 VM 上的 SSH 服务. 如果已经执行了较常规的 SSH 故障排除步骤,则需要进一步排查连接问题. 本文指导用户完成详细的故障排除步骤,以确定 SSH ...
- 在实战中使用nginx-rtmp遇到的TCP连接问题分析
在实战中使用nginx-rtmp遇到的TCP连接问题分析 背景 前段时间公司做了一次体育赛事的现场直播,网络由某通信公司负责搭建,主要测试5G CPE上行网络的带宽和稳定性,为了做到万无一失,他们同时 ...
- 【原创】时隔十年,再度审视Performance Testing,性能测试,Load Runner,和企业级性能测试解决方案
软件测试入行是2006年,最先学习的测试工具囊括了QTP,Test Director,Load Runner,Rational Robot,Rational Performance: 那时的操作系统是 ...
随机推荐
- 用变量a给出下面的定义
a)一个整型数(An integer)b) 一个指向整型数的指针(A pointer to an integer) c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to ...
- 记一次ftp服务器错误 centOS 6.4 vsftpd 500 illegal port command
这个错误是因为是主动模式的,应该改为被动模式 以下是操作过程: iptables中加 -A INPUT -p tcp -m state --state NEW -m tcp --dport 10221 ...
- OpenCV(4)-图像掩码操作(卷积)--平滑处理
卷积定义 矩阵的掩码操作即对图像进行卷积.对图像卷积操作的意义为:邻近像素对(包括该像素自身)对新像素的影响:影响大小取决于卷积核对应位置值得大小. 例如:图像增强可以使用 \[ I(i,j)=5*I ...
- problem 1 -- Two sum
很简单.没什么好说的.但是在阿里实习的第四面的时候居然问到了. 大意是给出一组无序数列和目标数Z,在无序数列中找到X和Y,使得X+Y=Z. 有两种方法: 一种是排序后,同时首尾搜索.时间复杂度为O(n ...
- centos VM 识别U盘
在VM设置选项中,选择 USB Controller 选项,设置相关参数即可
- 刷新dns
1.window:ipconfig /flushdns 2.linux sudo rcnscd restart
- 缓存 Cache
Controllers层 public class HomeController : Controller { // // GET: /Home/ // ...
- SORT_AREA_RETAINED_SIZE
manual pga: SORT_AREA_RETAINED_SIZE specifies (in bytes) the maximum amount of the user global area ...
- 写一个TT模板自动生成spring.net下面的配置文件。
这个是目标. 然后想着就怎么开始 1.
- JavaScript的OOP编程1
首先要说的是,javascript其实是可以进行OOP编程的,其次javascript的OOP编程实现方式有多种,我写的这一种只是我测试过,可行的一种 version1 // 父类 function ...