吞吐量
吞吐量是什么?一般吞吐量是指系统的抗压能力,负载能力,代表系统每秒能承受的最大访问量。一个系统的吞吐量通常由系统的qps(tps)、并发数来决定。这两个值都有一个相对极限值,只要某一项达到最大,系统的吞吐量就上不去。
QPS
QPS:Queries Per Second(每秒查询数),就是每秒响应成功的次数(即用户从客户端发出请求到服务端响应成功的次数)。
qps = request数量 / s
TPS
TPS: Transactions Per Second(每秒事务处理数),就是从客户端发出请求,到收到服务端响应成功处理的事务数。客户端从发送请求开始倒计时,收到服务端响应结束倒计时,以此来计算使用的时间和处理的事务数。
如果1秒访问一个页面,在请求这个页面接口的中间,这个接口没有再请求其他的接口,可以认为TPS和QPS是等价的,但是如果在请求这个接口的过程中,这个接口请求了其他接口,也就是请求了多次服务端,比如说一共请求了三次服务端,那QPS就是3,但是TPS 却是1。
tps = 每秒钟事务数量
RT
RT:response time(响应时间),指从客户端发起请求到服务端接收请求并成功返回的时间差,一般取平均响应时间。
并发数
并发数 = QPS * 平均响应时间
QPS = 并发数 / 平均响应时间
性能优化思考
我们参考公式QPS = 并发数 / RT,在单线程情况下,就是QPS = 1 / RT,假如RT是200ms,QPS就是5。那么我们只要提高线程数,就可以提高系统性能。
最佳线程数计算
实际上RT = cpu time(CPU执行时间) + cpu wait_time (CPU等待时间);按照上边的假如RT是200ms,其中cpu time是100ms,cpu wait_time是100ms;不考虑上下文切换的时间,理论上RT是可以处理2个请求。如果在考虑上CPU多核利用率,
最佳线程数=RT / cpu_time * cpu核数 * cpu利用率。