Aspects of performance
Computer performance metrics (things to measure) include availability, response time, channel capacity, latency, completion time, service time, bandwidth, throughput, relative efficiency, scalability, performance per watt, compression ratio, instruction path length and speed up. CPU benchmarks are available.
Availability
Availability of a system is typically measured as a factor of its reliability - as reliability increases, so does availability (that is, less downtime). Availability of a system may also be increased by the strategy of focusing on increasing testability and maintainability and not on reliability. Improving maintainability is generally easier than reliability. Maintainability estimates (Repair rates) are also generally more accurate. However, because the uncertainties in the reliability estimates are in most cases very large, it is likely to dominate the availability (prediction uncertainty) problem, even while maintainability levels are very high.
Response Time
Response time is the total amount of time it takes to respond to a request for service. In computing, that service can be any unit of work from a simple disk IO to loading a complex web page. The response time is the sum of three numbers:[3]
- Service time - How long it takes to do the work requested.
- Wait time - How long the request has to wait for requests queued ahead of it before it gets to run.
- Transmission time – How long it takes to move the request to the computer doing the work and the response back to the requestor.
Processing speed
Most consumers pick a computer architecture (normally Intel IA32 architecture) to be able to run a large base of pre-existing, pre-compiled software. Being relatively uninformed on computer benchmarks, some of them pick a particular CPU based on operating frequenc
并发数(Concurrency)
并发数(Concurrency),也叫并发连接数,指网络设备所能处理的最大会话数量。这里的会话数是指请求->响应一次会话。
并发用户数
并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。
吞吐率(Throughput)
我们一般使用单位时间内服务器处理的请求数来描述其并发处理能力。称之为吞吐率(Throughput),单位是 “req/s”。吞吐率特指Web服务器单位时间内处理的请求数。
另一种描述,吞吐率是,单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数量。它是衡量网络性能的重要指标。通常情况下,吞吐率“字节数/秒”来衡量。当然你也可以用“请求数/秒”和“页面数/秒”来衡量。其实不管一个请求还是一个页面,它的本质都是在网络上传输的数据,那么用来表述数据的单位就是字节数。
吞吐量(Throughput Capacity)
吞吐量(Throughput Capacity),是指在一次性能测试过程中网络上传输的数据量的总和。
对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,在容量规划的测试中,吞吐量是一个重点关注的指标,因为它能够说明系统级别的负载能力,另外,在性能调优过程中,吞吐量指标也有重要的价值。如一个大型工厂,他们的生产效率与生产速度很快,一天生产10W吨的货物,结果工厂的运输能力不行,就两辆小型三轮车一天拉2吨的货物,比喻有些夸张,但我想说明的是这个运输能力是整个系统的瓶颈。
其实,用吞吐量来衡量一个系统的输出能力是极其不准确的,用个最简单的例子说明,一个水龙头开一天一夜,流出10吨水;10个水龙头开1秒钟,流出0.1吨水。当然是一个水龙头的吞吐量大。你能说1个水龙头的出水能力是10个水龙头的强?所以,我们要加单位时间,看谁1秒钟的出水量大。这就是吞吐率。
吞吐量、吞吐率的意义
- 吞吐量的限制是性能瓶颈的一种重要表现形式,因此,有针对地对吞吐量设计测试,可以协助尽快定位到性能瓶颈所在的位置
- 80%系统的性能瓶颈都是由吞吐量制约
- 并发用户和吞吐量瓶颈之间存在一定的关联
- 通过不断增加并发用户数和吞吐量观察系统的性能瓶颈。然后,从网络、数据库、应用服务器和代码本身4个环节确定系统的性能瓶颈。
每秒查询率(Query Per Second,QPS)
每秒查询率(Query Per Second,QPS)是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。
- TPS:Transactions Per Second(每秒事务处理数),指服务器每秒处理的事务次数。一般用于评估数据库、交易系统的基准性能。
- QPS:Queries Per Second(查询量/秒),是服务器每秒能够处理的查询次数,例如域名服务器、MySQL查询性能。
- RPS:Request Per Second(请求数/秒):RPS(Request Per Second)和QPS可以认为是一回事。
吞吐率和压力测试
单从定义来看,吞吐率描述了服务器在实际运行期间单位时间内处理的请求数,然而,我们更加关心的是服务器并发处理能力的上限,也就是单位时间内服务器能够处理的最大请求数,即最大吞吐率。
所以我们普遍使用“压力测试”的方法,通过模拟足够多数目的并发用户,分别持续发送一定的HTTP请求,并统计测试持续的总时间,计算出基于这种“压力”下的吞吐率,即为一个平均计算值。
注意
- 在Web服务器的实际工作中,其处理的HTTP请求通常包括对很多不同资源的请求,也就是请求不同的URL, 比如这些请求有的是获取图片,有的是获取动态内容,显然服务器处理这些请求所花费的时间各不相同,而这些请求的不同时间组成比例又是不确定的。这就是实际情况下的吞吐率。
- 所以,我们对于同一个特定有代表性的请求进行压力测试,然后对多个请求的吞吐率按照比例计算加权平均值。
- Web服务器并发能力强弱的关键便是在于如何计算针对不同的请求性质来设计最优并发策略。在一定程度上使得Web服务器的性能无法充分发挥,这很容易理解,就像银行对不同业务设立不同的窗口一样,这些窗口的服务员分别熟悉自己的窗口业务。可以未不同的客户分别快速办理业务,但是如果让这些窗口都可以办理所有业务,也就是客户可以去任何窗口办理任何业务,那会是怎么样呢?没有几个银行业务员会对所有业务都轻车熟路,这样势必会影响到整体的业务办理速度。
压力测试
压力测试的描述一般包括两个部分,即并发用户数和总请求数,也就是模拟多少用户同时向服务器发送多少请求。
请求性质则是对请求的URL所代表的资源的描述,比如1KB大小的静态文件,或者包含10次数据库查询的动态内容等。
并发用户数
并发用户数就是指在某一时刻同时向服务器发送请求的用户总数。
假如100个用户同时向服务器分别进行10次请求,与1个用户向服务器连续进行1000次请求。两个的效果一样么?
一个用户向服务器连续进行1000次请求的过程中,任何时刻服务器的网卡接受缓存区中只有来自该用户的1个请求,而100个用户同时向服务器分别进行10次请求的过程中,服务器网卡接收缓冲区中最多有100个等待处理的请求,显然这时候服务器的压力更大。
一个服务器最多支持多少并发用户数呢?
我们可以说,这个柜台支持的最大并发数为10,因为恰好在这个并发数下,柜台业务开展的非常成功。顾客们都对服务时间非常满意,而此时代表业务办理次数的柜台吞吐率也比较高,商场和顾客们实现双赢。
可见,通常所讲的最大并发数是有一定利益前提的,那就是服务器和用户双方所期待的最大收益,服务器希望支持高并发数及高吞吐率,而用户不管那么多,只希望等待较少的时间,或者得到更快的下载速度。
所以得出最大并发数的意义,在于了解服务器的承载能力,并且结合用户规模考虑适当的扩展方案。
对于同一域名下URL的并发下载数是有最大限制的,具体限制视浏览器的不同而不同。 一个真实的用户可能会给服务器带来两个或更多的并发用户的压力,一些高明的用户还可以通过一些方法来修改浏览器的并发数限制。
请求等待时间
- 用户平均请求等待时间
- 服务器平均请求处理时间
用户平均请求等待时间主要用户衡量服务器在一定并发用户数的情况下,对于单个用户的服务质量服务器平均请求处理时间与前者相比,则用户衡量服务器的整体服务质量,它其实就是吞吐率的倒数。
Reference
- 吞吐率、吞吐量、TPS、性能测试,纸上不谈兵—-一步一步构建高性能 Web 站点 - https://ruby-china.org/topics/26221
- 性能调优攻略 - https://coolshell.cn/articles/7490.html
- 性能测试应该怎么做? - https://coolshell.cn/articles/17381.html
- https://www.dynatrace.com/news/blog/why-averages-suck-and-percentiles-are-great/