一、关键字概述
1、PV(Page View): 页面访问量,即页面浏览量或点击量,用户每次刷新即被计算一次
2、UV(Unique Visitor): 独立访客,统计1天内访问某站点的用户数(以cookie为依据,如同一个用户)
3、QPS(Query Per Second): 每秒请求数,QPS其实是衡量吞吐量的一个常用指标,就是说服务器在一秒的时间内处理了多少个请求。
4、TPS(Transactions Per Second): 每秒事务数(数据库中常用)
5、并发数: 并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。(例如:nginx 的活动链接数)
6、吐吞量: 吞吐量是指系统在单位时间内处理请求的数量
7、响应时间(RT): 响应时间是指系统对请求作出响应的时间,一般取平均响应时间
二、运算规则,逻辑关系
1、峰值 QPS 计算方式
代码语言:javascript
复制
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
2、QPS(TPS)、并发数、响应时间它们三者之间的关系是
代码语言:javascript
复制
公式:
QPS(TPS)= 并发数 / 平均响应时间
并发数 = QPS * 平均响应时间
QPS = 总请求数 / ( 进程总数 * 请求时间 )
3、PV 计算带宽
代码语言:javascript
复制
PV 统计:nginx日志,一般是对所有访问日志数量,进行求和统计
UV 统计:nginx日志,对remote_addr进行统计,排除remote_addr重复值,进行求和统计。
代码语言:javascript
复制
公式:
网站带宽= PV / 统计时间(换算到S)*平均页面大小(单位KB)* 8
注意:峰值预估的话,一般是网站带宽的5倍。
4、PV与并发
代码语言:javascript
复制
并发连接数公式: 并发连接数 = PV / 统计时间 * 页面衍生连接次数 * http响应时间 * 因数 / web服务器数量
页面衍生连接次数: 一个页面请求,会有好几次http连接,如外部的css, js,图片等,这个根据实际情况而定。
http响应时间: 平均一个http请求的响应时间,可以使用1秒或更少。
因数: 峰值流量 和平均流量的倍数,一般使用5 ,最好根据实际情况计算后得出
代码语言:javascript
复制
单台服务器每天PV计算
公式1:每天总PV = QPS * 3600 * 6
公式2:每天总PV = QPS * 3600 * 8
5、服务器计算
代码语言:javascript
复制
服务器数量 = ( 每天总PV / 单台服务器每天总PV )
三、案例
案例1: 每天300w PV 的在单台机器上,这台机器需要多少QPS?,如果一台机器的QPS是58,需要几台机器来支持?
代码语言:javascript
复制
答:
( 3000000 * 0.8 ) / (86400 *0.2 ) = 139 (QPS)
139 / 58 = 3 台
案例2: 假如 1秒钟100个请求,处理每个请求需要花2秒,QPS是多少
代码语言:javascript
复制
答:
100 / 2= 50 Qps
案例3: 10万PV,页面派生50个请求、http 1秒响应, 因数:5 倍峰值,求单台qps
代码语言:javascript
复制
答:
10PV的并发连接数: (100000PV / 86400秒 * 50个派生连接数 * 1秒内响应 * 5倍峰值) / 1台Web服务器 = 289 并发连接数
案例4: 假设网站的平均日PV:10w 的访问量,页面平均大小0.4 M
代码语言:javascript
复制
答:
网站带宽 = 10w / (24 60 * 60) 0.4M * 8 =3.7 Mbps
实际带宽大约在 3.7 Mbps * 5=18.5 Mbps (峰值流量是平均流量的5倍,需要是峰值流量)