β

什么是并发连接

Seven 320 阅读

某人问:我有一个总用户3000的论坛放在VPS上,这个VPS的并发连接数限制在500以下。我是不是要换个并发连接数大点的VPS?

我答:完全没有必要。

我很奇怪虽然做web开发总是把并发数挂在嘴边,但是中文圈里面很少有博文正面回答这个问题——什么是并发连接数?

姑且就让我试着解释清什么是并发连接数。

什么是连接?


当你在看这篇文章的时候,是一个连接吗?基本上不是(除非你的网络很慢很慢)。

当你进入一个网站,你的浏览器会有一个不断旋转的标志表示正在加载,这个时候,你可以说你发起了一个连接(假设是一个纯HTTP文本页面)。当这个标志不见的时候,表明请求完成,这个连接已经中断。所以当你在看这篇文章的时候,基本上连接已经中断了。

什么是并发连接?

当两个人同时对一个服务器发起请求的时候,我们可以说这个时候并发连接数为2。

同时这个词在这里的定义并不是很精确,假设完成一次请求需要443毫秒,那么在这个请求发生8毫秒之后发起的另一个请求就不能称之为并发连接。但是,一个单核的CPU在任何一个时间点上其实只能执行一个任务,如果在这个意义上说的话,并发连接数永远不会超过CPU的个数。

一般情况下,我们把一秒中完成的请求数定义为并发连接数。

回到那个论坛的问题,一个总用户数3000的论坛,我们假设同时在线用户数为300,然后每个用户在一个小时之内发起30次请求,每次请求花费2s时间(比较合理的假设)。

total_request = 300 * 30 = 9000次

total_time = 9000 * 2 = 18000s

1h = 60 * 60 = 3600s

即在3600s中需要完成9000次请求,其中活跃连接时间为18000s

平均每秒完成请求 = 9000 / 3600 < 3

因为用户的访问不是平均的,所以峰值肯定不只为3次/秒,但是我们基本可以肯定这个VPS的并发连接数限制不会成为性能的瓶颈。并且我们注意,如果每个请求完成时间缩短,我们实际产生的并发连接的可能性会随之降低,反之依然。

这里出于简单分析的目的,把每次请求发起的连接数简单定义为1,实际上每个页面由于css文件,js文件,图片等会发起多个连接,而其中并行发起的连接根据浏览器的不同而不同,不过一般在10以内,读者应根据自己网站的实际情况进行更细致的分析。

我这里只分析了最简单的HTTP模型,当面临可持续连接的时候,还需要考虑更多的因素,这些超出了本文的目的,读者自行思考。

参考资料:

http://blog.litespeedtech.com/2013/04/26/concurrent-connections-demystified/

作者:Seven
之所以描绘影,是为了描绘光
原文地址:什么是并发连接, 感谢原作者分享。

发表评论