博客: http://elf8848.iteye.com
你想建设能承受500万PV/天的网站吗? 500万PV是什么概念? 服务器每秒处理多少个请求才能响应? 如果我计算一下呢?
什么是视点:
PV是页面视图的简称。 PV是指页面的访问量,每次打开或更新页面时,即使制作一个PV。
计算模型:
每台服务器每秒的处理请求数=((80 )总PV量/(24小时) 60分钟(60秒) 40 ) ) ) ) ) ) /服务器数。
其中重要的参数是80%、40%。 表示每天有80%的请求发生在每天40%的时间内。 24小时的40%为9.6小时,80%的请求每天发生9.6小时。 (非常适合互联网APP应用,白天请求多,晚上请求少)。
简单计算的结果:
(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。 我在意的是APP应用处理业务的能力。
实际经验:
1 .根据实际经验,采用两台普通配置的机架式服务器,配置为常见配置。 例如,一个四核CPU 4G内存服务器SAS硬盘。
2、我个人认为英特尔的CPU在服务器CPU领域优于AMD的CPU。 如果有人反对的话就反对吧。 我说我很武断。 (请参阅CPU性能比较。 不要太相信AMD的广告。 比较CPU性能的简单方法是比较价格。 请不要比较频率和芯数。 即使价格差不多的性能也一样。
3、硬盘的性能很重要,它是数据库服务器。 典型的服务器配备1.5万转SASHDD,而高级服务器配备固态硬盘,可提高性能。 最重要的指标不是"顺序读写性能",而是"随机读写性能"。 (在本例中,让我们配置最常见的1.5万转SAS硬盘。)
4、一台服务器运行Tomcat J2ee程序,一台服务器运行MySql数据库,程序写入中等,属于论坛类型APP。 (总是有回复,做缓存不简单,也不能静态化。 )。
5、以上软硬件情况可承受100万PV/天。 (留下了应对突然来访的充裕口红) )。
注意机房的网络带宽:
有人说满足了以上条件,但实际性能没有达到目标。 此时,请注意对外网络的带宽。 国内的服务器虽然便宜,但是带宽很高。 机房很可能与大家共享100M的光纤,实际上可以分为每人2M左右的带宽。 再便宜一点5米,再便宜一点的双线机房独占10米。 这个已经很贵了。
每日总流量:每页20k字节*100万页/1024=19531 MB=19gb
19531M/9.6小时=2034M/小时=578kbyte/s当要求均匀分布时,需要5M(640kbyte )的带宽(5Mb=640KB注意大小写,b是比特,b是字节,有8倍的差)
以上假设每页20k字节,几乎不包含图像,如果包含图像则变得更大,10M的带宽也无法满足要求。 你自己算吧。
(全文结束)。
附件:性能测试的基本概念
------------- -请参阅
基本概念:
Throughput (吞吐量) :按照通常的理解,网络吞吐量表示单位时间内通过网卡发送的总数据量,包括本地卡接收的数据量。 100Mb (比特)双工卡,最大传输数据速率为12.5 MB /秒,最大接收数据速率为12.5 MB /秒,可以同时发送和接收数据。
并发用户数同时执行操作的用户(线程数)。
响应时间:从发出请求到接收到响应所用的时间。
QPS - Queries Per Second每秒处理的查询数(对于数据库,相当于读取) ) )。
TPS - Transactions Per Second每秒处理的事务数(对于数据库,相当于写入、修改) ) )。
IOPS、磁盘I/O每秒次数
br>例如对某个数据库测试,分开两次测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(每秒事务数)
---------------------------------------------------------------------------------------
Apache ab测试参数说明:
RPS: Request per Second,每秒处理的请求数
详见:
http://blog.chinaunix.net/u3/108043/showart_2260477.html