每个老板或客户都会问架构师这个问题. 你设计的网站能承受多大的日访问量. 程序员都会拍胸脯说出一个心理最大数字.说的时候很有信心.其实这个数字大多是猜的.作为一个理性的程序员怎么能用猜呢? 这里就介绍如何计算网站能承受的最高日访问数.

一. 我们得先做测试确认基本数据.

多数情况只计算网站日最大访问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万左右.

三. 可能的意外和需要注意的事项.

  1. 在真实网站项目中存在多个动态网页. 在本地压力测试时,需要模仿真实访问比例测试多个动态页并且合计出每秒最大压力pv结果,此结果取值于最慢的动态页(千万注意不是取平均值). 模拟真实动态页面访问比例测试以尽可能做到准确. 在这里要多参考已有同类型站点的页面访问统计结果.
  2. 网站中往往还存在img,js,css等等其他文件访问,这个也会拖慢服务器响应.做模拟测试时要考虑进去.当然还要考虑带宽问题(对于多数动态页面来说带宽不是瓶颈).
  3. 日最高峰小时的秒高峰倍率估算,不同类型的网站根据其业务不同有变化,有两个办法可以解决,一靠长期的观察估算倍率. 二是最好给测试结果留更多的余量以应付突发访问压力增大的情况.毕竟这个计算测试值是理论极限,超过此极限性能会急剧下降.
  4. 对于动态页面来说,一但某个请求程序出错会极大延长响应时间,做压力估算时也要为此留出余量.
  5. 其实在一年中不同的日访问流量也是不同的,节假日流量甚至可以达到平日的两倍或更多.为了网站访问稳定,最好以年最大日访问并且预留30%压力.

http://www.shizhuolin.com/20140530/543.html

如何估算网站日承受最大访问PV的更多相关文章

  1. 你想建设一个能承受500万PV/每天的网站吗?服务器每秒要处理多少个请求才能应对?

    你想建设一个能承受500万PV/每天的网站吗?服务器每秒要处理多少个请求才能应对? 你想建设一个能承受500万PV/每天的网站吗? 500万PV是什么概念?服务器每秒要处理多少个请求才能应对?如果计算 ...

  2. 你想建设一个能承受500万PV/每天的网站吗?

    (如果感觉有帮助,请帮忙点推荐,添加关注,谢谢!你的支持是我不断更新文章的动力.本博客会逐步推出一系列的关于大型网站架构.分布式应用.设计模式.架构模式等方面的系列文章) 你想建设一个能承受500万P ...

  3. 你想建设一个能承受500万PV/每天的网站吗?如果计算呢?(转)

    作者:赵磊 博客:http://elf8848.iteye.com 你想建设一个能承受500万PV/每天的网站吗? 500万PV是什么概念?服务器每秒要处理多少个请求才能应对?如果计算呢? PV是什么 ...

  4. 假如想要建设一个能承受500万PV/每天的网站,服务器每秒要处理多少个请求才能应对?

    假如想要建设一个能承受500万PV/每天的网站,服务器每秒要处理多少个请求才能应对?如何计算? 1.PV是什么:PV是page view的简写.PV是指页面的访问次数,每打开或刷新一次页面,就算做一个 ...

  5. 建设一个能承受500万PV/每天的网站如果计算?

    PV是什么: PV是page view的简写.PV是指页面的访问次数,每打开或刷新一次页面,就算做一个pv. 计算模型: 每台服务器每秒处理请求的数量=((80%*总PV量)/(24小时*60分*60 ...

  6. Ubuntu Nginx下配置网站ssl实现https访问

    最近在看  HTTP权威指南   看到介绍了HTTPS的ssl,自己就动手测试了下,将步骤记录下 HTTPS简介 什么是HTTPS?百科是这样解释的.HTTPS(全称:Hyper Text Trans ...

  7. 使用iptables防火墙限制web的访问PV

    使用iptables防火墙限制web的访问PV #!/bin/bash while true;do awk '{print $1}' /tmp/test/access.log| grep -v &qu ...

  8. 大型php网站性能和并发访问优化方案(转载自php中文网)

               网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎 ...

  9. .net网站上传图片换电脑不显示 当不用网站的IP地址访问图片,只用相对路径访问时,在发布网站的时候,将上传图片的目标文件夹,包含在项目中再发布即可。

    .net网站上传图片换电脑不显示 当不用网站的IP地址访问图片,只用相对路径访问时,在发布网站的时候,将上传图片的目标文件夹,包含在项目中再发布即可.

随机推荐

  1. IWorkSpace接口介绍 1.打开各种数据库

    IWorkspace接口提供访问工作空间的通用属性和方法,如它的连接属性,以及包含的数据集的方法. IWorkspace的成员字段: Members   Description ConnectionP ...

  2. php 内置的 webserver 研究。

    今天,试了一下通过 php5.4.45 内置的webserver , 在Windows XP 上面能够跑起公司的一个项目,完全无压力.哈哈,只要一个php 就可以,不需要 Apache , Nginx ...

  3. PHP 领域逻辑与数据库映射

    http://blog.csdn.net/hguisu/article/details/7569968

  4. Hibernate与IBatis的优缺点及可行性分析

    以下文章来源于考试大 1.优点 简单: 易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现. 实用: 提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供 ...

  5. Sping--AOP--XML

    IoC: annotation AOP: XML XML比annotation用的多. beans.xml: <?xml version="1.0" encoding=&qu ...

  6. spring mvc获取路径参数的几种方式 - 浅夏的个人空间 - 开源中国社区

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  7. Quick Cocos2dx Action相关

    周末在家除了看犯罪心里和反恐24小时,啥都没干,为毛在家老是不能安安静静的看书学习敲代码?不知道啊 心好累,感觉学习不下去了. 然后公司上午有半天世界杯决赛假,下午回来更新了svn,没啥工作内容,只好 ...

  8. VS2010打开旧版本MFC工程无对话框

    解决方案: 左侧有个"资源视图",打开,里面就能找得到对话框,如果没有资源视图,就在菜单的视图选项里打开资源视图!

  9. minor gc 和 full gc

    JAVA中关于GC的分析中,需要搞清楚,GC线程在什么时候,对什么东西,做了什么操作. 1-在什么时候 首先需要知道,GC分为minor GC和full GC,JAVA内存分为新生代和老年代,新生代中 ...

  10. realm-java 源码疑问

    JNIEXPORT void JNICALL Java_io_realm_internal_Group_nativeWriteToFile( JNIEnv* env, jobject, jlong n ...