废话不多说,直接开始。
QPS
原理:每天 80% 的访问集中在 20% 的时间里,这 20% 时间叫做峰值时间。
公式:( 总 PV 数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)。
PV(page view)即页面浏览量,通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标。网页浏览数是评价网站流量最常用的指标之一,简称为 PV。
再来看一个计算机器数量的公式:
需要的机器数量:峰值时间每秒 QPS / 单台机器的 QPS。
举个例子,每天 300w PV 打在单台机器上,这台机器需要多少 QPS?
( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)。
一般需要达到 139 QPS,因为是峰值。(200 万 PV 才有 100 峰值 QPS)
TPS
TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。
TPS 包括一条消息入和一条消息出,加上一次用户数据库访问。
一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量,系统整体处理能力取决于处理能力最低模块的 TPS 值。
RT(响应时长)
响应时间是指:系统对请求作出响应的时间(一次请求耗时)。
直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,在讨论一个系统的响应时间时,人们通常是指该系统所有功能的平均时间或者所有功能的最大响应时间。当然,往往也需要对每个或每组功能讨论其平均响应时间和最大响应时间。
对于单机的没有并发操作的应用系统而言,人们普遍认为响应时间是一个合理且准确的性能指标。需要指出的是,响应时间的绝对值并不能直接反映软件的性能的高低,软件性能的高低实际上取决于用户对该响应时间的接受程度。
对于一个游戏软件来说,响应时间小于 100 毫秒应该是不错的,响应时间在 1 秒左右可能属于勉强可以接受,如果响应时间达到 3 秒就完全难以接受了。而对于编译系统来说,完整编译一个较大规模软件的源代码可能需要几十分钟甚至更长时间,但这些响应时间对于用户来说都是可以接受的。
Load(系统负载)
Linux 的 Load 是一个让新手不太容易了解的概念。Load 就是一定时间内计算机有多少个 active_tasks,也就是说是计算机任务执行队列的长度,CPU 计算的队列。
top/uptime 等工具默认会显示 1 分钟、5 分钟、15 分钟的平均 Load。
具体来说,平均 Load 是指,在特定的一段时间内统计的正在 CPU 中运行的(R 状态)、正在等待 CPU 运行的和处于不可中断睡眠的(D 状态)任务数量的平均值。
最后,说一下 CPU 使用率和 Load 的关系吧。如果主要是 CPU 密集型的程序在运行,那么 CPU 利用率高,Load 一般也会比较高。
If CPU utilization is near 100 percent (user + nice + system), the workload sampled is CPU-bound
而 I/O 密集型的程序在运行,可能看到 CPU 的 %user, %system 都不高,%iowait 可能会有点高,这时的 Load 通常也比较高。
同理,程序读写慢速 I/O 设备(如磁盘、NFS)比较多时,Load 可能会比较高,而 CPU 利用率不一定高。这种情况,还经常发生在系统内存不足并开始使用 swap 的时候,Load 一般会比较高,而 CPU 使用率并不高。
PV
页面访问次数:Page View。
UV
访客数(去重复):Unique Visitor。
以上。