Refer to:http://elf8848.iteye.com/blog/967049

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

PV是什么:

PV是page view的简写。PV是指页面的访问次数,每打开或刷新一次页面,就算做一个pv。

计算模型:

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

其中关键的参数是80%、40%。表示一天中有80%的请求发生在一天的40%的时间内。24小时的40%是9.6小时,有80%的请求发生一天的9.6个小时当中(很适合互联网的应用,白天请求多,晚上请求少)。

简单计算的结果:

((80%*500万)/(24小时*60分*60秒*40%))/1 = 115.7个请求/秒

((80%*100万)/(24小时*60分*60秒*40%))/1 = 23.1个请求/秒

初步结论:

现在我们在做压力测试时,就有了标准,如果你的服务器一秒能处理115.7个请求,就可以承受500万PV/每天。如果你的服务器一秒能处理23.1个请求,就可以承受100万PV/每天。

留足余量:

以上请求数量是均匀的分布在白天的9.6个小时中,但实际情况并不会这么均匀的分布,会有高峰有低谷。为了应对高峰时段,应该留一些余地,最少也要x2倍,x3倍也不为过。

115.7个请求/秒 *2倍=231.4个请求/秒

115.7个请求/秒 *3倍=347.1个请求/秒

23.1个请求/秒 *2倍=46.2个请求/秒

23.1个请求/秒 *3倍=69.3个请求/秒

最终结论:

如果你的服务器一秒能处理231.4--347.1个请求/秒,就可以应对平均500万PV/每天。

如果你的服务器一秒能处理46.2--69.3个请求,就可以应对平均100万PV/每天。

说明:

这里说明每秒N个请求,就是QPS。因为我关心的是应用程序处理业务的能力。

实际经验:

1、根据实际经验,采用两台常规配置的机架式服务器,配置是很常见的配置,例如一个4核CPU+4G内存+服务器SAS硬盘。

2、个人武断的认为在服务器CPU领域Intel的CPU要优于AMD的CPU,有反对的就反对吧,我都说我武断了(请看CPU性能比较),不要太相信AMD的广告,比较CPU性能简单办法就是比价格,不要比频率与核心数,价格相差不多的性能也相差不多。

3、硬盘的性能很重要,由其是数据库服务器。一般的服务器都配1.5万转的SAS硬盘,高级一点的可以配SSD固态硬盘,性能会更好。最最最最重要的指标是“随机读写性能”而不是“顺序读写性能”。(本例还是配置最常见的1.5万转的SAS硬盘吧)

4、一台服务器跑Tomcat运行j2ee程序,一台服务器跑MySql数据库,程序写的中等水平(这个真的不好量化),是论坛类型的应用(总有回帖,不太容易做缓存,也无法静态化)。

5、以上软硬件情况下,是可以承受100万PV/每天的。(已留有余量应对突然的访问高峰)

注意机房的网络带宽:

有人说以上条件我都满足了,但实际性能还是达不到目标。这时请注意你对外的网络的带宽,在国内服务器便宜但带宽很贵,很可能你在机房是与大家共享一条100M的光纤,实际每个人可分到2M左右带宽。再好一点5M,再好一点双线机房10M独享,这已经很贵了(北京价格)。

一天总流量:每个页面20k字节*100万个页面/1024=19531M字节=19G字节,

19531M/9.6小时=2034M/小时=578K字节/s   如果请求是均匀分布的,需要5M(640K字节)带宽(5Mb=640KB 注意大小写,b是位,B是字节,差了8倍),但所有请求不可能是均匀分布的,当有高峰时5M带宽一定不够,X2倍就是10M带宽。10M带宽基本可以满足要求。

以上是假设每个页面20k字节,基本不包含图片,要是包含图片就更大了,10M带宽也不能满足要求了。你自已计算吧。

(全文完)

附:性能测试基本概念

---------------------------------------------------------------------------------------

基本概念:

Throughput(吞吐量):按照常规理解网络吞吐量表示在单位时间内通过网卡数据量之和,其中即包括本机网卡发送出去的数据量也包括本机网卡接收到的数据量。 一个100Mb(位)的双工网卡,最大发送数据的速度是12.5M字节/s , 最大接收数据的速度是12.5M字节/s, 可以 同时 收发数据。

并发用户数:是同时执行操作的用户(线程数)。

响应时间:从请求发出到收到响应花费的时间 。

QPS- Queries Per Second每秒处理的查询数(如果是数据库,就相当于读取)

TPS- Transactions Per Second每秒处理的事务数(如果是数据库,就相当于写入、修改)

IOPS,每秒磁盘进行的I/O操作次数

例如对某个数据库测试,分开两次测QPS与TPS。

QPS(读取)值总是高于TPS(写、改),并且有倍率关系,因为:

1、数据库对查询可能有缓存。

2、机械硬盘或SSD硬盘的读就是比写快。 ---------------------------------------------------------------------------------------

JMeter测试参数说明:

Label:每一个测试单元的名字。

#Samples:表示一个测试单元一共发出了多少个请求。

Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间。,不重要。

Median:中位数,也就是 50% 用户的响应时间,如果把响应时间从小到大顺序排序,那么50%的请求的响应时间在这个范围之内。重要。

90% Line:90% 用户的响应时间,如果把响应时间从小到大顺序排序,那么90%的请求的响应时间在这个范围之内。重要 。

Min:最小响应时间,不重要。

Max:最大响应时间,出现几率只不过是千分之一甚至万分之一,不重要。

Error%:本次测试中出现错误的请求的数量

Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数

KB/Sec:每秒从服务器端接收 到的数据量(只是接收),相当于LoadRunner中的Throughput/Sec

---------------------------------------------------------------------------------------

loadrunner测试参数说明:

响应时间: 取90%值,如果把响应时间从小到大顺序排序,那么90%的请求的响应时间在这个范围之内。重要。

每秒点击数 :hits per Second,每秒钟向服务器提交请求的数量。

TPS: Transaction per Second ,每秒事务数,一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程

Throughput(吞吐量): Loadrunner记录的Throughput是接收到服务器返回的所有字节数之和,与本地发出的字节数无关。

Throughput/Sec: 每秒的吞吐量。

对于BS架构的一般分析 响应时间、点击率、吞吐量、TPS(每秒事务数)。

对于CS架构的一般分析 TPS(每秒事务数)

-----------------------------------------------------

Silence, the way to avoid many problems;

Smile, the way to solve many problems;

posted on 2013-05-04 16:00 Chan Chen 阅读(1214) 评论(0)  编辑  收藏 所属分类: Architecture

java记录pv,计算500万PV/每天的网站相关推荐

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

    2019独角兽企业重金招聘Python工程师标准>>> 作者:赵磊 博客:http://elf8848.iteye.com 你想建设一个能承受500万PV/每天的网站吗? 500万P ...

  2. 如何估算网站日承受最大访问PV ,你想建设一个能承受500万PV/每天的网站吗?如果计算呢?

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

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

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

  4. 大规模数据生成 (500万条数据)

    前言: 最近有一个作业需要 对 大规模数据 进行 性能测试 需要500万条数据,这是一个很大的量,我们无法通过cvs文件这种方式把数据导入数据库 我开始想到了一个解决方案,使用java程序,循环500 ...

  5. C++的速度比Java快2.1%:来自计算100万以内质数的实验数据对比

    为了验证C++到底比Java快多少分别用两种语言计算100万以内的质数,并记录时间 C++的程序是 clock_t start,ends; start=clock(); int i, j; for(i ...

  6. java 10000阶乘_Java ForkJoinPool: 3秒计算100万的阶乘

    问题背景&思路 如果需要计算100的阶乘,那应该怎么做? 方法1: for循环(默认,单线程) 方法2: 多线程,MapReduce思想 main线程开启多个子任务(个数=CPU核心数),放到 ...

  7. mongodb 百万_MongoDB查询性能超过500万条记录

    我们最近为我们的一个主要系列收录了> 2百万条记录,现在我们开始对该系列的主要性能问题感到不满. 它们在集合中的文档有大约8个字段,您可以使用UI过滤,结果应该按记录处理的时间戳字段排序. 我已 ...

  8. 咱们500万条数据测试一下,如何合理使用索引加速?

    5 如何合理使用索引加速 tips: 500万条建表sql参照网盘sql脚本 [root@linux-141 bin]# ./mysql -u root -p itcast < product_ ...

  9. 台商华硕遭500万美元索赔真相调查(二)

    重重疑点 在大家看来,全部事件的起因完全是那块存在于黄静电脑中的问题CPU.那么,这块问题CPU是怎样出现的?这中间有没有被人掉包? 华硕官方声明强调:华硕自黄静送修计算机所取下的CPU送回英特尔原厂 ...

最新文章

  1. java统计 pv uv_统计PV、UV的新武器——Aviator
  2. 两机五节点电力系统的潮流仿真计算_南科大杨再跃课题组在电力系统、机器学习等领域取得重要研究成果...
  3. CSP认证201503-2 数字排序[C++题解]:哈希表、排序、结构体
  4. 基于框架的应用系统的质量属性
  5. android中activity布局,Activity布局初步(一)
  6. Oracle开发专题之:分析函数(OVER)
  7. 【渝粤教育】电大中专建筑力学 (2)作业 题库
  8. 数据库入门-pymysql模块的使用
  9. gtShell - 为你常用的目录建立标签并快速跳转
  10. JavaScript综述
  11. Freeman链码,差分码,归一化链码,归一化差分码
  12. Cisco防火墙概述和产品线
  13. 图扑 Web 可视化引擎在仿真分析领域的应用
  14. 【广告算法工程师入门 26】机制设计-考虑客户ROI的机制设计方法与实践
  15. Alertmanager 通知模板
  16. c# mailgun 发送邮件测试
  17. 计算机打印步骤,如何将打印机连接到计算机将打印机连接到计算机的步骤[图形教程]...
  18. 运载火箭飞行控制系统设计
  19. PHP写入txt文件换行
  20. Mac安装指定版本的node

热门文章

  1. enum与int、String之间的转换
  2. keil html转换工具,网页转换工具FCARM和makefsfile的使用简介
  3. DB2连接不上mysql数据库_一次DB2数据库连接失败(SQLSTATE=08001)的解决方法
  4. 改变 this 指向的 call 和 apply
  5. matlab求微分数值,用MATLAB语言求微积分方程的数值解.(xd^2y)/dx^2-5dy/dx+y=0y(0)=0y'(0)=0...
  6. java 栈 大小_java – JVM堆栈大小规范
  7. Java8————Lambda表达式(二)
  8. MySQL数据库知识点总结
  9. 嵌入式全栈工程师_我花了半个月,整理出了这篇嵌入式开发学习指南(学习路线+知识点梳理)...
  10. 彭山计算机培训,彭山2021年初中生学计算机