对于网站带宽来说,并没有一个通用固定的公式和计算的方法来计算网站所需带宽,但是并不是这样我们就没法对网站的带宽进行预算了。同样我们还有有办法对带宽和资源进行预算,这样就可以知道需要买什么样的服务器,和需要多少带宽了,不同的业务,流量差距很大的,下面我们看一下常见的网站类型和带宽资源需求。
本文以我所经历的一个项目案例来说明。
网站类型:
文字类:导航、门户网站(大量的文字内容+少量配图)——页面大小在20K文字+100K资源
图片类:相册、图片分享(大量图片)——页面大小在1M图片
视频类:软件下载、视频播放(大文件)——文件大小在10M左右
电商类:导购、商城(大量文字+大量图片)——页面大小在1M图片
社交类:论坛、博客、群组(大量文字+部分静态资源)——页面大小在20K文字+200K资源
我们的服务器包括门户网站和电子商务页平均面大小1M(电子商务)+0.8M(门户网站)=1.8M
这个是网站页面的平均大小,即网站页面及图片视频CSS、JS大小总和/页面数,即为平均页面大小。预计我们两个网站页面平均大小为1M和0.8M。
计算公式: 网站PV【注释1】* 页面下载大小 * 8 / 30000
上面的 30000 是一天的有效秒数,毕竟高峰、低峰有差别,一天中的高峰时段还是比较少。
上面的 8 是指一个字节是8位,而带宽都是以位做衡量单位。
我们这里用10万PV作为一个量级来做一次计算
文字类: 100000 * 0.12 * 8 / 30000 = 3.2
社交类: 100000 * 0.22 * 8 / 30000 = 5.86
图片类: 100000 * 1 * 8 / 30000 = 26
电商类: 100000 * 1 * 8 / 30000 = 26
视频类: 100000 * 10 * 8 / 30000 = 266
从上面的计算结果大概可以有一个概念了吧。
一个门户网站,页面内容小一点,图片少一点,需要的带宽相应也就不会太多了。10万的PV基本上可以一个3、5M的带宽就可以搞定了,不需要高太多复杂的分离【注释2】等工作。我们这里门户网站和电商分别
门户网站:100000 * 0.8 * 8 / 30000 = 22M
电子商务:100000 * 1* 8 / 30000=27M
第一:假设峰值流量是平均流量的5倍。
第二:假设每次访问平均的页面大小 门户网站800K,电子商务1024K。
如果100万PV的访问量在一天内平均分布的话,折合到每秒大约12次访问,如果按平均每次访问页面的大小是800K(1024K)字节左右计算的话,这12次访问总计大约就是9600K(12288K)字节,字节的单位是Byte,而带宽的单位是bit,它们之间的关系是1Byte = 8bit,所以9600K Byte(12288K)大致就相当于76800K bit(98304 K bit),也就是75Mbps (96Mbps)的样子,实际情况中,我们的网站必须能在峰值流量时保持正常访问,所以按照假设的峰值流量算,真实带宽的需求应该在75Mbps(96Mbps) 左右。
当然,这个结论是建立在前面提到的两点假设的基础(100万PV值、平均页面800k(1024k))上,如果你的实际情况和这两点假设有出入,那么结果也会有差别。
前期网站访问量比较少100万PV肯定是没有的,前期访问量预计会在,门户网站0.5万PV,电子商务1万PV,通过计算带宽为:门户网站为0.48M、电子商务为0.96M.。同时考虑系统冗余0.3。即所需带宽为(0.48+0.96)/0.7=2.05M即4M带宽(带宽为偶数和整数)
即在前期4M带宽这足够,但是随着宣传和推广流量会迅速上升、短时间内会达到一个平衡。预计门户网站会达到10万PV、电子商务40万PV左右即
【(10/0.5)0.48+(40/1)0.96】/0.7=68.5M即70M带宽。
当然这个也是在一个前提内:即1S内网站做出的反应,研究表明,用户能够忍受的最长等待时间的中位数,在6~8秒之间。这就是说,8秒是一个临界值,如果你的网站打开速度在8秒以上,那么很可能,大部分访问者最终都会离你而去。研究显示,如果等待12秒以后,网页还是没有载入,那么99%以上的用户会关闭这个网页,不再等待。相对应地,网页打开速度越慢,访问者的心理挫折感就越强,就会对网站的可信性和质量产生怀疑。在这种情况下,用户会觉得网站的后台可能出现了一些错误,因为在很长一段时间内,他没有得到任何提示。而且,缓慢的打开速度会让用户忘了下一步要干什么,不得不重新回忆,这会进一步恶化用户的使用体验。
人们不喜欢速度慢的软件因为人们不喜欢等待,等待意味着你要浪费时间而无所事事。但等待是你和电脑交互的过程中所必须经历的过程,软件不会马上相应你的指示,你需要等待软件载入,等待网页下载,登载……
因为等待并不是产品好的特征,你需要把它的影响最小化。所以要想办法缩短让用户等待的时间。如果反应时间增加同样所需带宽减少一半,对于门户网站和电子商务建议在2S内做出反应,所以所需带宽70M/2=35M(40M)足够。缩短用户等待时间还有其他很多方法,比如优化代码,还有就是现在比较流行的加入有趣的进度条的设计,一方面网站能够向用户显示反馈消息,进度条告诉用户进度目前完成了多少,还剩下多少,还可以精确地显示进行得有多快,以此来估算出剩余时间。 另一方面有趣的进度条设计可以分散用户等待的注意力,从而让用户觉得等待的时间没有那么长,程序运行的不那么慢!
除了带宽速度外,实际的业务支撑情况取决于以下几点因素:服务类型(即门户网站、电子商务)、服务器硬件性能(cpu、内存)、网站程序、数据库(Oracle、MySql、MSsql)等。
服务器资源:
一台服务器支撑的访问量没有一个定值,因为不同的应用占用的服务器硬件资源和服务器带宽资源是不一样的,如服务器上面的数据库结构复杂,且数据文件庞大,一个访问者进行数据查询,造成的计算量可能要消耗 1%的 CPU 资源,复用 CPU 情况下大概估算 200 个这样的用户就会消耗完服务器的 CPU 资源,即使带宽再充足,用户访问已经非常慢了,因为服务器没法计算超额的任务;
在这里我们只考虑带宽的影响。网站流量是实时动态变化的,所以我们最好采用监控系统来监测网站数据流量和安全。可监测的网站内容包括:网站文字、链接、图片、源代码、网页打开速度、DNS解析等。
注释:
1、 PV:PV(page view)即页面浏览量,通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标。网页浏览数是评价网站流量最常用的指标之一,简称为PV。监测网站PV的变化趋势和分析其变化原因是很多站长定期要做的工作。 Page Views中的Page一般是指普通的html网页,也包含php、jsp等动态产生的html内容。来自浏览器的一次html内容请求会被看作一个PV,逐渐累计成为PV总数。
2、分离: 是指由于网站访问量过大,把图片、静态页面、动态处理,分为不同的服务器来处理,从而减轻服务器压力。