您的位置:首页 > 运维架构 > 网站架构

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

2016-04-08 16:13 281 查看
你想建设一个能承受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/每天。这里不关心是请求的是静态的html,还是动态的jsp。

如果你的服务器一秒能处理23.1个请求,就可以承受100万PV/每天.

说明:这里说明每秒N个请求,就是QPS。而不是请求一个html页面而附带请求的css,js,图片。因为我关心的是应用程序处理业务的能力。

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

基本概念:

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(每秒事务数)

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

Apache ab测试参数说明:

RPS:
Request per Second,每秒处理的请求数

详见:
http://blog.chinaunix.net/u3/108043/showart_2260477.html
概念说明

QPS : queries per second 每秒查询(请求)数

TPS : Transactions Per Second 每秒事务数

并发: 系统同时处理的请求/事务数

吞吐量:

响应时间 :客户端从发出请求到接受响应包的时间,一般为平均响应时间

一个系统的吞吐量(承压能力) 与request对CPU的消耗、外部接口、IO等等紧密关联。

单个request对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

对服务器的意义

WEB服务器

QPS(TPS) = 并发数/平均响应时间

对WEB服务器而言,QPS/TPS是一样的

举例:现在有一台WEB服务器,测试访问某页面

当并发100时,响应时间为0.1S ,则QPS = 100/0.1 =1000

当并发500时,响应时间为1S ,则QPS =500/1 =500

得出结论,并发100时,QPS最高。

有什么意义呢?个人看法,如下:

当并发超过100,响应时间变大,可以去排查瓶颈,进行优化;

如果高峰期并发有300,考虑到用户体验及成本,可以配置3台WEB服务器。

另外提到QPS时,应该指定什么场景,多少并发。

数据库

QPS :平均每秒SQL 语句执行次数

==参考文档
http://www.ha97.com/5095.html

/article/3875507.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: