浅谈服务器访问量PV

最近一直有人问我:在给定的一台服务器上如何预知这台服务器能承受的访问量是多少,究竟应该怎么合理去均衡这个负载问题。趁着清明时节清闲之态撸撸。

想要知道一台服务器能承受的访问量,首先有必要先了解一下常说的 IP PV 的概念,所谓IP估计大家都知道,就是一个客户端的地址,无论这个客户端访问了服务器多少页面,都只计算为一个IP;另外一个概念是PV,它的意思是page view (页面访问量),简单理解也就是说当客户端访问服务器页面,只要有访问一个页面或者刷新就记录一次,因此这个就是人们常说的PV访问量。那么这个访问量究竟应该如何去计算,才能让我们的服务器在它能承受的范围内工作呢?

对于计算一台服务器的承受量,其实这个有很多方面的因素影响,比如服务器本身的硬件方面:CPU处理能力问题,内存利用率问题,IO问题,网卡问题,磁盘以及转速的问题,这些方面直接影响到一台服务器的性能问题;另外还有个网络方面的问题就是带宽,如果再好的服务器,带宽太小,仍然是无法支撑较高的访问量。总之,在我们宏观上面能理解到的这些因素都在考虑范围内,仍然还有很多细微的因素(如应用程序)也会直接影响到服务器的性能(这里就不做具体介绍和说明)。根据我们对于互联网的常规推论,日常的访问量有80%都集中在白天的8-9个小时内,也就是一天中的40%小时左右,因此就可以得出一个大致的推导公式:

1
每台服务器每秒处理请求的数量 = ((80%*站点总PV量)/(24小时*60分*60秒*40%)) / 服务器数量

根据这个公式不难看出,一台服务器每秒处理请求的数量,假设在不考虑其他因素的情况下,某一站点日访问量1000W PV ,根据上面的推导公式可以得出:

1
QPS = ((80% * 1000W) / (24小时 * 60分 * 60秒 * 40%)) / 服务器数量

如果服务器只有一台承担,则这台服务器至少需要每秒处理231.4个请求,也就是当其他条件都符合,如果服务器每秒能够处理231.4个请求,差不多可以承受一天1000W的访问量。但是这个值只是一个理想值,实际中是比这个值更小,因此如果单台服务器每秒CPU能处理300个请求,那么一天1000W访问量应该没有问题(这个值是在其他条件都满足的条件下,下面会介绍另外一个因素会影响这个值)。

现在就来介绍另一个限制因素-带宽,也需要先了解一下 带宽 的概念,带宽简单理解就是指单位时间能通过链路的数据量。为什么会说带宽会影响访问量呢?原因很简单,当我们访问一个页面时,需要从服务器端去下载这个页面的内容,如果这个页面内容较大,超过了网络传输的数据量,那么就会出现延时或者丢包,导致这一次请求丢失或者超时而放弃。因此这个带宽大小直接制约了服务器端能否接受到请求的数量。那么这个带宽应该如何来计算才能让服务器合理的利用资源呢?这里又需要引入一个公式:

1
站点一天总流量 = 请求页面大小(k字节)* 站点总PV量 / 1024

假如上面所讲到的一个站点一天有1000W PV,那么利用这个公式可以计算出这个站点一天的流量:

1
流量 = 20KB(我们假定访问页面平均大小20KB)* 1000W / 1024 = 195312.5MB = 195GB

那么换算为带宽 则195GB /(3600 * 24 * 40%) = 5.65MB/s = 5.65 * 8 = 45Mb 带宽(B 是字节,b是位 ,8位为1字节),因此在日访问量为1000W的单台服务器还需要带宽为45M才能满足这样的要求,但是实际上也有误差,也就是说并不是每一次发送的请求都需要向服务器端获取页面内容(本地缓存),也并不是说页面平均大小为20KB,有时候一张图片都有好几百KB,所以这也是一个理想值,仅供参考。因此实际情况中,我们并不会用单台服务器来承担这么大的访问量,这也可以相对地减轻服务器压力,并提高性能(根据实际情况一台服务器利用80%CPU处理事务要比两台服务器各自利用40%CPU处理事务慢)。

(The End)

坚持原创技术分享,您的支持将鼓励我继续创作!