Windows服务器怎么查看iis并发连接数

Windows服务器怎么查看iis并发连接数,第1张

什么是IIS并发连接数

IIS并发连接数是指,首先是向服务器请求XXXhtml,然后还会请求这个网页里的CSS、JS、等,每次请求算一个IIS并发数,因此IIS理论上是要分为好几程序情况。

要分几种情况:(以100M空间50人在线为例)

用户单点下载你的文件,结束后正常断开,这些连接是按照瞬间计算的,就是说你50人的网站瞬间可以接受同时50个点下载 ;用户打开你的页面,就算停留在页面没有对服务器发出任何请求,那么在用户打开一面以后的15分钟内也都要算一个在线,就是说你50人的网站15分钟内可以接受不同用户打开50个页面

上面B的情况用户继续打开同一个网站的其他页面,那么在线人数按照用户最后一次点击(发出请求)以后的15分钟计算,在这个15分钟内不管用户怎么点击(包括新窗口打开)都还是一人在线。

当你的页面内存在框架(Iframe),那么每多一个框架就要多一倍的在线!因为这相当于用户同一时间向服务器请求了多个页面。

当用户打开页面然后正常关闭浏览器,用户的在线人数也会马上清除。

然后了解什么是论坛在线人数。

论坛在线只是计算一定时间内的活动用户数。

这里的时间用户可以自己设定(删除不活动用户时间),动网论坛默认为40分钟的相对准确值。

根据上面的说明,显然论坛在线和IIS连接数的概念不同

比如您的网站20IIS,出现了4039错误提示IIS连接过多,而这个时候你的论坛却只显示10人在线(假设在线时间设置为20分钟),那么正确的解释应该是:

访问您的网站有20个连接,其中正常访问论坛的人有10个。

怎么查看iis并发连接数

方法:

点“开始->运行”,在弹框中输入“perfmonmsc”后回车

打开系统监视器,在右侧图表区里点击右键,再点“添加计数器”

在 “添加计数器”窗口中,“性能对象”选择"web Service",“从列表选择计数器”选择中“Current Connection”,“从列表选择实例”中选择要统计的站点,最后点击“添加”按钮即可完成设置。

点击完“添加”关闭“添加计数器”设置框后,就可以看到该网站的连接数,曲线是**的

如果看得不明显的,可以将其他的计数器删除,在图表区里面右击,选择“属性”

将除了网站之后的计数器都删除

这样,在“系统监视器”图表区域中只看到一条曲线,它就是改网站的连接线曲线图。

当然并发连接数设置成为“不受限制”,监控的数值才是最准确的。

问题:有一个页面,需要测试一下最大支持多少用户并发?

此时需计算的是最大用户并发数,强调的是同时操作,也可以理解为同时发起请求;

针对这个问题,我们可以通过rps定时器或阶梯加压线程组测试每秒最大的请求数;

首先需要导入jmeter-plugins插件 ,然后去初始化需要用到的插件

在平衡状态下,并发数=RPS响应时间

a)使用jp@gc - Throughput Shaping Timer (吞吐量成形计时器,调节rps的定时器);

设置线程组中线程数为50,ramp-up时间为1s,永远循环;

同时在请求下面加Throughput Shaping Timer定时间,rps由1增加到400/s;

测试最终运行时间取 线程组运行时间 与 定时器时间的最小值;

设置后我们需要添加几个性能测试中常用的监听器:

添加监听器Hits per Second(每秒请求数)

观察HPS走势,HPS在140的时候持续了十几秒,随后HPS稳定在100

 添加监听器 Transaction per second

TPS在48/s稳定了十几秒,然后稳定在30/s

  添加监听器 jp@gc - Response Times Over Time

平均响应时间在3s以内

 在比较稳定的情况下,最大rps=140/s,平均响应时间=16s,则最大并发=14016=224,也就是224个线程同时启动可满足1s内140/s HPS压力值

b)使用阶梯加压线程组

功能如下:

This group will start 100 threads :设置线程组启动的线程总数为400个;

First,wait for N seconds :启动第一个线程之前,需要等待N秒;

Then start N threads :设置最开始时启动N个线程;

Next,add 100 threads every 2 seconds,using ramp-up 10 seconds :每隔2秒,在10秒内启动100个线程;

Then hold load for 40 seconds :启动的线程总数达到最大值之后,再持续运行40秒;

Finally,stop 100 threads every 0 seconds :同时停止100个线程;

设置阶梯线程组各配置项后,再添加各个监听器后观察,发现得出的tps,rps,平均响应时间与添加rps监听器测试出的结果基本一致

下面可以来验证一下,线程组的线程数设置为224,其它值可随意,(如,设置定时60s,循环次数设置为100,因为并发数=rps响应时间 是在平衡状态下得出的结论,所以运行时间不能太短)

添加监听器Hits per Second,Transactions per Second,Response Times Over Time 查看这些指标是否和上面得出的结果一致(预期应该是满足的)

我们要测试的网站地址是什么?链接是什么?所以现在我们就来设置这些信息。右键点击我们刚创建的线程组,在弹出的菜单中,选择添加->Sampler->Http请求,弹出如下图界面:

路径:

假如你只是对一个链接进行压力测试,直接填写一个链接就ok,比如 http://www baiducom,但是大多数情况下都不是这样的,我们这里需要多个链接,就如同刚开始讲到的那样,我们要将多个链接保存到一个文本文件中,然后随机读取进行压力测试。我们可以这么做,如图:

在选择一个功能下拉列表中选择_StringFromFile,然后在本机新建一个测试文件C:\Users\root\Desktop\apache-jmeter-29\testtxt,在第一行(你也可以不在第一行)的值中填写测试文件的路径,如下图:

然后点击“生成”按钮,在生成按钮的左边文本框中将生成一个字符串如:

${__StringFromFile(C:\Users\wukong\Desktop\testtxt,,,)}

在testtxt测试文件中,我们每行写一个URL链接,如下格式:

如果地址是:wwwquzhuanpancom那么。在testtxt中的内容,就是相对地址;如

这样一来,当我们并非请求的时候,就会从testtxt中随机选择url来进行压力测试。

另外值得注意的一个地方是,如果参数中有中文的情况,运行的时候可能会出现乱码,这个时候就需要注意你在Jmeter中的编码设置与你要请求的网页编码是一致的。

路径文本框下面的选项,可以按默认的就成,Use multipart/form-data for HTTP POST是当请求中有附件的情况,一般情况下都不用选中的

3) 查看运行结果

鼠标右键点击线程组,在弹出的菜单中选择添加->监听器->用表格查询结果,如下图:

各属性如下:

Sample:每个请求的序号

Start Time:每个请求开始时间

Thread Name:每个线程的名称

Label:Http请求名称

Sample Time:每个请求所花时间,单位毫秒

Status:请求状态,如果为勾则表示成功,如果为叉表示失败。

Bytes:请求的字节数

在下面还有几个参数:

样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数

平均:每个线程请求的平均时间

最新样本:表示服务器响应最后一个请求的时间

偏离:服务器响应时间变化、离散程度测量值的大小。

并发数

并发数,计算机网络术语,是指同时访问服务器站点的链接数。

由于虚拟主机是建立在每台服务器多用户的基础上的,也就是多个用户共同使用一台服务器。为了避免同一台服务器上的某一个用户的IIS链接人数过多或占用服务器资源过多而影响其它用户的正常使用,所以,目前所有虚拟空间提供商都对单个用户的IIS链接数,流量及服务器进程占用CPU的比率进行了相应的限制。 当某一个用户的站点超出了服务器上的设制后,访问站点时就会出现服务器忙,或目前访问该站点的人数过多,超出了WEB的处理能力等相关错误提示。

1、减少内存分配和释放

服务器在运行过程中,需要大量的内存容量来支撑,内存的分配和释放就尤为关键。用户在使用服务器的时候,可以通过改善数据结构以及算法制度来减少中间临时变量的内存分配和数据复制时间。

另外,可以选择使用共享内存模式来降低内存的分配和释放问题。共享内存在多处理器系统中,可以被不同的中央处理器访问,也可以有不同的进程共享,是一种非常快的进程通信方式。

2、使用持久链接

持久链接也被称为场链接,是通过TCP通信的一种方式。在一次TCP链接中持续发送多份数据而不断开连接。

从性能角度上来讲,建立TCP链接次数越少,越有利于性能的提升,尤其对于密集型或者网页等数据处理上来说有明显的加速作用。

3、改进I/O模型

I/O操作根据设备形式有不同的类型,例如我们常见的内存I/O,网络I/O,磁盘I/O。针对网络I/O和磁盘I/O, 它们的速度要慢很多,可以选择采用高带宽网络适配器可以提高网络I/O速度。

以上的I/O操作时需要CPU来调度的,这就需要CPU空出时间来等待I/O操作。如果在CPU调度上使用时间较少,也就能节约出CPU的处理时间,从这一点上来说也是提升高服务器并发处理能力的方式。

4、改进服务器并发数策略

服务器高并发策略的调整,是为了让I/O操作和CPU计算尽量重叠进行。一方面使CPU在I/O操作时等待时间内不要空闲,另一方面也是为了最大限度缩短等待时间。感兴趣的话点击此处,了解一下

长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。

长连接,是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接。

聊天室或即时消息推送系统等,因为很多消息需要到产生时才推送给客户端,所以当没有消息产生时,就需要hold住客户端的连接,这样,当有大量的客户端时,要hold住大量的长连接。

在性能测试过程中,经常会接触到连接数相关的问题,有一个问题曾经困扰我好长时间,那就是一台服务器最多能支持多少链接数呢?

有的朋友可能会说是65535,因为操作系统有65535个端口,那么这个答案准确吗?

首先先了解下如何标识一个链接(记住下面的概念,文章后面要用到),操作系统是通过一个四元组来标识一个TCP链接:

{本地ip,本地port,远程ip,远程port}

这四个要素唯一确定一个TCP链接,任意一个要素不相同,就认为是一个不同的链接。

在Linux系统中,一切皆文件,每一个TCP链接都要占用一个文件句柄,系统允许创建的链接数取决于句柄数的上限。超过这个值再创建链接就会报这样的错误:“Can't open so many files"。

通过命令ulimit -n可以查看当前系统允许打开文件数量的上限,在Linux中这个值默认是1024,也就是说默认情况下,只能创建1024个链接。同时这个值也是可以修改的,通过修改/etc/security/limitsconf文件,可以把这个值改大,一般服务器都会改的很大,比如我们的服务器上一般设置为1000000。

那这么说是不是就意味着只要我改的很大,链接数可以无限大了?

其实也并不是这样,创建链接的时候,一般分为两个端, 即链接的发起端和链接接收端。

比如我们现在使用Jmeter进行压测,被测系统部署在Tomcat服务器10003上,使用的是8080端口。

如果我们用5个并发来进行压测的话,创建的链接如下图所示:

对于Jmeter来说,它是链接发起端,Jmeter创建了5个链接去连接服务端的8080端口,每个新建链接会占用了一个端口号,如图中的10001-10005。在操作系统中,端口号的范围是0-65535,其中0-1024是预留端口号,不可使用,其他的端口都是可以使用的。也就是说, 在链接发起端,受端口号的限制理论上最多可以创建64000左右链接。

那么有没有办法超过这个限制呢,答案是肯定的!

通过TCP标识的四元组可以看到,对于链接发起端,影响链接数的是本地ip和port,端口号受限于65535,已经没办法增加了。那我们可以增加本地ip来达到这个目的。一般情况下,服务器的一个网卡上只绑定了一个ip,对外通信都使用这个ip进行。其实网卡是支持一个绑定多个IP的,当然必须确保ip是有效的且未使用的。

# ifconfig eth0:1 10005

以上命令可以在eth0网卡上增加一个ip 10005,服务器网卡每增加一个ip,就可以允许在这个ip上再创建65535左右的链接数。

曾经做过一个邮件网关的链接数测试,目的是为了测试网关服务器可以接收并且保持多少TCP长连接。正常情况下,受限于单台机器65535端口号的影响,客户端想创建25万TCP长连接,至少需要4台机器。通过对客户端网卡绑定多IP的方法,成功在一台机器上创建了25万个链接。

当然,这种手段只是一种非常规的操作,只是为了进行某种特殊场景的测试。正常情况下不推荐网卡绑定多个IP。

对于Tomcat服务器来讲,它是链接接收端,它是不是也受限于65535呢?

并不是,从上面图中可以看到,Jmeter发起的所有链接都创建在Tomcat服务器的8080端口,也就是说对于链接接收端,所有的链接占用的是同一个端口。

根据TCP标识四元组可以分析出, 一个链接接收端,最大的TCP链接数=所有有效ip排列组合的数量端口数量64000 ,这个计算结果应该是一个天文数字。 因此链接接收端支持的链接数理论上可以认为是无限大的。

上面介绍的一些数据都是理论上单台机器可以支持的TCP链接数, 实际情况下,每创建一个链接需要消耗一定的内存,大概是4-10kb,所以链接数也受限于机器的总内存。

链接发起端,活力全开才64000左右链接,内存最多才占用640M,一般客户端都能 满足,内存限制主要还是考虑服务器端。

虽然现在的集群,分布式技术可以为我们将并发负载分担在多台服务器上,那我们只需要扩展出数十台电脑就可以解决问题,但是我们更希望能更大的挖掘单台服务器的资源,先努力垂直扩展,再进行水平扩展,这样可以有效的节省服务器相关的开支(硬件资源、机房、运维人力、电力其实也是一笔不小的开支)。

首先需要考虑文件句柄的限制。在Linux下编写网络服务器程序的朋友肯定都知道每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,新的连接到来返回给我们的错误是“Socket/File:Can't open so many files”。这时你需要明白操作系统对可以打开的最大文件数的限制。

我们可以通过ulimit -n命令、/etc/security/limitsconf 文件 以及 /etc/sysctlconf 文件等来修改文件句柄数。

其次要考虑的是端口范围的限制,操作系统上端口号1024以下是系统保留的,从1024-65535是用户使用的。

由于每个TCP连接都要占一个端口号,所以我们最多可以有60000多个并发连接。我想有这种错误思路朋友不在少数吧?

面试官也比较喜欢在这里引导挖坑,类似的问题还有:一个UDP连接可以复用已经被TCP连接占用的端口嘛?

如何标识一个TCP连接?

系统使用一个4四元组来唯一标识一个TCP连接:

本地端口号 local port、本地IP地址 local ip、远端端口号 remote port、远端IP地址 remote ip。

server通常固定在某个本地端口上监听,等待client的连接请求。不考虑地址重用(unix的SO_REUSEADDR选项)的情况下,即使server端有多个ip,本地监听端口也是独占的,因此server端tcp连接4元组中只有remote ip(也就是client ip)和remote port(客户端port)是可变的,因此最大tcp连接为客户端ip数×客户端port数,对IPV4,不考虑ip地址分类等因素,最大tcp连接数约为2的32次方(ip数)×2的16次方(port数),也就是server端单机最大tcp连接数约为2的48次方。

上面给出的结论都是理论上的单机TCP并发连接数,实际上单机并发连接数肯定要受硬件资源(内存)、网络资源(带宽)的限制。

单台服务器最大支持多少连接数

https://blogcsdnnet/alpha_love/article/details/108351457

单机服务器支持千万级并发长连接的压力测试

https://blogcsdnnet/lijinqi1987/article/details/74545851

https://blogcsdnnet/wangshuminjava/article/details/80619190

HTTP长连接200万尝试及调优

https://wwwcnblogscom/zlingh/p/4814836html

一次百万长连接压测 Nginx 内存溢出问题

https://blogcsdnnet/yangbaggio/article/details/107007627

大并发下TCP内存消耗优化小记(86万并发业务正常服务)

https://blog51ctocom/benpaozhe/1752675

TCP长连接与短连接的区别

https://wwwcnblogscom/liuyong/archive/2011/07/01/2095487html

Linux系统设置–ulimit

https://bloghaohtmlcom/archives/9883

HTTP的长连接和短连接

https://wwwcnblogscom/cswuyg/p/3653263html

网络连接中的长连接和短链接是什么意思

https://wwwzhihucom/question/22677800

性能优化篇-使用长连接提升服务性能

https://zhuanlanzhihucom/p/118946284

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Windows服务器怎么查看iis并发连接数

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情