怎么区分PV、IV、UV、TPS、QPS、RPS、
1、pv访问量(Page View),即页面访问量,每打开一次页面PV计数+1,刷新页面也是。
2、UV访问数(Unique Visitor)指独立访客访问数,一台电脑终端为一个访客。
3、IV是IP访问数指独立IP访问数,计算是以一个独立的IP在一个计算时段内访问网站计算为1次IP访问数。在同一个计算时段内不管这个IP访问多少次均计算为1次。计算时段有以1天为一个计算时段,也有以1个小时为一个计算时段。
4.TPS:(每秒处理的事务数目)即Transactions Per Second
--一个事务指一个客户端向服务器发起请求,服务器做出反应并返回到客户端的整个过程;
5.QPS:(每秒处理的查询数目)即Request Per Second
--是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准;
6.RPS:(每秒处理的请求数目)即Request Per Second
--等效于QPS;
https://www.cnblogs.com/sunbeidan/p/8477196.html
每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
每天300w PV 的在单台机器上,这台机器需要多少QPS?
( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
如果一台机器的QPS是58,需要几台机器来支持?
139 / 58 = 3 如何查看线上机器的QPS
https://blog.csdn.net/exceptional_derek/article/details/47617397
背景:线上有一个推荐服务,日志量比较大,想确认下是不是qps过高
问题:如何根据日志查看一个服务的qps
tail -f XXX.log,可以发现日志格式如下:
[8708-10 14:51:44 638 INFO ] [async task worker[61]] recommend.components.KeywordService[87] - cateid=252 pageNum=1
[8708-10 14:51:44 666 INFO ] [async task worker[62]] recommend.components.KeywordService[87] - cateid=42205
[8708-10 14:51:44 673 INFO ] [async task worker[0]] recommend.components.KeywordService[87] - cateid=29 pageNum=2
[8708-10 14:51:44 677 INFO ] [async task worker[1]] recommend.components.KeywordService[87] - cateid=252 pageNum=3
日志规范中,有一列“请求时间”,可以通过这个“请求时间”估算出服务的qps, 步骤如下:
(1)先找一条使得一个请求有且只有一行的日志,常用工具是grep,此例需要grep recommend.components.KeywordService,得出的结果,一个请求对应一行日志
(2)取出时间这一列,常用的工具是cut或者awk,这里介绍一下cut(大家到linux上去man一下)
-d 参数,按照某个字符分隔
-f 参数,取出分隔后的第几列
这个例子中,按照“空格”分隔后,时间在第二列
进行1,2两步操作后,得到的结果为
14:51:44
14:51:44
14:51:45
14:51:45
14:51:46
14:51:46
(3)对结果进行去重,取计数,常用的工具是uniq,参数是-c
故,整个shell命令是:
命令:tail -f XXX.log | grep recommend.components.KeywordService | cut -d' ' -f2 | cut -d':' -f3 | uniq -c
说明:取增量 | 一个请求取一行 | 把时间截取出来 | 把秒数截取出来 | 去重取计数
得到的结果是
136 43
126 44
115 45
131 46
132 47
可以看到,14:51:43,共有136条日志
44,有126条日志
45,有115条日志
...
结论,这个模块,单机的qps在120-130左右
需要注意的是,cut的目的是将请求日志时间戳中的“秒”取出来,所以随着请求日志格式的不同,cut的写法也要随机应变~
原文:https://blog.csdn.net/exceptional_derek/article/details/47617397
那么下面这个题怎么解呢
