如何估算网站日承受最大访问PV
每个老板或客户都会问架构师这个问题. 你设计的网站能承受多大的日访问量. 程序员都会拍胸脯说出一个心理最大数字.说的时候很有信心.其实这个数字大多是猜的.作为一个理性的程序员怎么能用猜呢? 这里就介绍如何计算网站能承受的最高日访问数.
一. 我们得先做测试确认基本数据.
多数情况只计算网站日最大访问pv数,而不是ip或uv(用户访问次数).因为对大多数网站来说,相同pv下无论多少IP造成的访问压力是一样的.
造成服务器压力的访问多是对动态页面的请求,因为这些页面需要读写数据库或做更复杂的即时计算.我们的先做实验确定网站动态页面每秒访问成功响应数和每个请求响应时长. 对于网站来说,多数情况响应时长最多不能超过0.6s.否则用户会感到很慢.理想的情况是0.3s以内. 这个结果可以在网站开发完成后用测试工具获得. 例如我用jmeter工具测试我笔记本上的网站得出如下结果:

上图表明此网站部署. 每秒响应241.7个请求,每个请求平均响应时间为0.081s, 超过90的响应大于0.121s, 其中最长的响应请求时长为0.701s. 我们就以此值为最大测试结果来计算整天此网站能承受的访问PV
二. 计算方法和计算缘由.
根据以上测试结果得知每秒的合理请求相应数约241.7个. 由于每日小时访问数并不均衡,所以我们需要知道每日24小时的每小时流量占日总流量比例和小时最高访问压力. 假设通过其他的类似站点日流量统计得知,此类站点访问压力最大的时间是晚上21点.此时访问流量占了日总PV的33%. 由于统计站点能统计到的最小尺度为小时,而我们的本地测试尺度是秒. 很显然一个小时内每秒的流量也是不均衡的. 所以我们这里要估计晚上21点中最大访问秒的请求数.按照经验可以估计为 “小时pv/3600秒*3″ 也就是把21点的请求按平均分配到每秒.并且把三倍每秒请求作为日最高的秒请求数. 注意不同的站点这个常量是不一样的. 具体要根据实际业务估算(有些网站例如定时发售什么的这么计算就明显不合适). 对于大部分企业站点来说常量3是可行的.
好了,现在我们知道了本地测试的每秒最大访问,也知道了高烽小时占日访问百分比,也知道了高峰秒的估算值.要计算日最大访问就很容易了.以上估算为例, 日最大访问:
PV = 241.7 ÷ 3 × 3600 ÷ 0.33 ≈ 878909
日最大可承受87.9万pv. 按多数情况的每Ip访问7-10页计算,日可承受IP:10万左右.
三. 可能的意外和需要注意的事项.
- 在真实网站项目中存在多个动态网页. 在本地压力测试时,需要模仿真实访问比例测试多个动态页并且合计出每秒最大压力pv结果,此结果取值于最慢的动态页(千万注意不是取平均值). 模拟真实动态页面访问比例测试以尽可能做到准确. 在这里要多参考已有同类型站点的页面访问统计结果.
- 网站中往往还存在img,js,css等等其他文件访问,这个也会拖慢服务器响应.做模拟测试时要考虑进去.当然还要考虑带宽问题(对于多数动态页面来说带宽不是瓶颈).
- 日最高峰小时的秒高峰倍率估算,不同类型的网站根据其业务不同有变化,有两个办法可以解决,一靠长期的观察估算倍率. 二是最好给测试结果留更多的余量以应付突发访问压力增大的情况.毕竟这个计算测试值是理论极限,超过此极限性能会急剧下降.
- 对于动态页面来说,一但某个请求程序出错会极大延长响应时间,做压力估算时也要为此留出余量.
- 其实在一年中不同的日访问流量也是不同的,节假日流量甚至可以达到平日的两倍或更多.为了网站访问稳定,最好以年最大日访问并且预留30%压力.
http://www.shizhuolin.com/20140530/543.html
如何估算网站日承受最大访问PV的更多相关文章
- 你想建设一个能承受500万PV/每天的网站吗?服务器每秒要处理多少个请求才能应对?
你想建设一个能承受500万PV/每天的网站吗?服务器每秒要处理多少个请求才能应对? 你想建设一个能承受500万PV/每天的网站吗? 500万PV是什么概念?服务器每秒要处理多少个请求才能应对?如果计算 ...
- 你想建设一个能承受500万PV/每天的网站吗?
(如果感觉有帮助,请帮忙点推荐,添加关注,谢谢!你的支持是我不断更新文章的动力.本博客会逐步推出一系列的关于大型网站架构.分布式应用.设计模式.架构模式等方面的系列文章) 你想建设一个能承受500万P ...
- 你想建设一个能承受500万PV/每天的网站吗?如果计算呢?(转)
作者:赵磊 博客:http://elf8848.iteye.com 你想建设一个能承受500万PV/每天的网站吗? 500万PV是什么概念?服务器每秒要处理多少个请求才能应对?如果计算呢? PV是什么 ...
- 假如想要建设一个能承受500万PV/每天的网站,服务器每秒要处理多少个请求才能应对?
假如想要建设一个能承受500万PV/每天的网站,服务器每秒要处理多少个请求才能应对?如何计算? 1.PV是什么:PV是page view的简写.PV是指页面的访问次数,每打开或刷新一次页面,就算做一个 ...
- 建设一个能承受500万PV/每天的网站如果计算?
PV是什么: PV是page view的简写.PV是指页面的访问次数,每打开或刷新一次页面,就算做一个pv. 计算模型: 每台服务器每秒处理请求的数量=((80%*总PV量)/(24小时*60分*60 ...
- Ubuntu Nginx下配置网站ssl实现https访问
最近在看 HTTP权威指南 看到介绍了HTTPS的ssl,自己就动手测试了下,将步骤记录下 HTTPS简介 什么是HTTPS?百科是这样解释的.HTTPS(全称:Hyper Text Trans ...
- 使用iptables防火墙限制web的访问PV
使用iptables防火墙限制web的访问PV #!/bin/bash while true;do awk '{print $1}' /tmp/test/access.log| grep -v &qu ...
- 大型php网站性能和并发访问优化方案(转载自php中文网)
网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎 ...
- .net网站上传图片换电脑不显示 当不用网站的IP地址访问图片,只用相对路径访问时,在发布网站的时候,将上传图片的目标文件夹,包含在项目中再发布即可。
.net网站上传图片换电脑不显示 当不用网站的IP地址访问图片,只用相对路径访问时,在发布网站的时候,将上传图片的目标文件夹,包含在项目中再发布即可.
随机推荐
- MFC中的NMHDR结构体和NMUPDOWN结构体
建立spin控件,创建UDN_DELTAPOS一个消息函数后: void CSpinDlg::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) { NM ...
- 基于I2C EPPRPM(AT24C02B) + LCD12864实验
本次实验目的:在指定的EPPROM地址中,写入一数据,延时100MS后,在从该地址中读取,并在LCD上显示. 该实验在前两天就开始做了,一开始并没有成功,读出的一直0x00,当时也调了一会,但跳回到P ...
- CodeForces 590B Chip 'n Dale Rescue Rangers
这题可以o(1)推出公式,也可以二分答案+验证. #include<iostream> #include<cstring> #include<cmath> #inc ...
- jQuery方式事件冒泡的2个方法
方式1:通过 event.stopPropagation(); $("div").click(function (event) { slide.call(this); event ...
- The 2014 ACM-ICPC Asia Mudanjiang Regional
继续复盘之前的Regional......出题者说这一套题太简单,对当时没有AK很不满......真是醉了,弱校没法活了 [A]签到题 [B]树结构,树的中心 [C]-_-/// [D]概率DP [E ...
- 下标脚本(Swift)
下标脚本 可以定义在类(Class).结构体(structure)和枚举(enumeration)这些目标中,可以认为是访问集合(collection),列表(list)或序列(sequence的快捷 ...
- Inside dependency property
依赖属性的定义,分为3步(以PresentationFramework中的System.Windows.Controls.Button为例) 1. 声明依赖属性 public static read ...
- ice grid配置使用第二篇------实际使用
一 首先,启动ice grid 1 修改配置文件 node.cfg,appication.xml 修改registry.cfg 配置注册表信息: IceGrid.Registry.Client. ...
- 关于eclipse创建Maven项目创建的问题
1.问题: 为什么Maven Update Project JDK变回1.5 解释:官方文档 The Compiler Plugin is used to compile the sources of ...
- 13、手把手教你Extjs5(十三)模块字段和Grid列的定义[1]
这一节加入模块自定义字段,并根据这些字段生成model.然后再定义grid中的分组和列.从这一切开始真正进入到了模块自定义的节奏当中,代码的复杂度和技巧性也大大提高.先从模块字段的自定义开始.先看一下 ...