背景:正在学习中台相关知识,需要对技术名词进行学习。
目的:学习常用性能指标
本次了解范围:QPS、TPS、并发数、响应时间
一、基本概念
1、响应时间RT(Reaction Time)一般取平均响应时间
指系统对请求做出响应的时间,讨论响应时间时应该考虑最大响应时间和平均响应时间,响应时间需要根据业务场景来定,如游戏一般响应时间再100ms以下比较优秀,1s左右勉强可以接受;视频加载、电商网站浏览等不同场景决定不同的响应时间。
2、吞吐量TPS(Throughput)
吞吐量是指单位时间内处理请求的数量。无并发的系统,吞吐量和响应时间成反比;并发系统,通常需要用吞吐量作为性能指标。
一般而言,吞吐量是一个比较通用的指标,两个具有不同用户数和用户使用模式的系统,如果其最大吞吐量基本一致,则可以判断两个系统的处理能力基本一致。
3、并发用户数
并发用户数是指系统可以同时承载的正常使用系统的用户数量。并发用户数是更加直观更加笼统的性能指标。
并发用户数是系统可以同时承载的用户数量,但是用户不同的使用模式会导致并发用户数不同(参考注册用户,访问网页用户,请求用户)。所以,一般情况下以同时发送请求用户数作为性能指标更加准确些。
4、QPS 每秒查询率(Query Per Second):每秒钟request/事务 数量
QPS是衡量服务器性能的指标,QPS=并发量/响应时间,一般用每秒查询率进行衡量,即每秒的响应请求数量。
5、并发数:系统同时处理的request/事务
举个例子:
银行窗口业务,早上8点上班,窗口数量为10个窗口,平均每个人办理业务的时候为5分钟。可以用下面的方法计算。
并发数=10个窗口
平均响应时间为 = 5*60 秒
QPS = 10/(5*60) 事务/秒
二、QPS如何提升
系统的吞吐量一般由并发数和响应时间决定,所以需要增加并发数,或者减少平局响应时间
①增加并发数
1.比如增加tomcat并发的线程数,和服务器性能匹配的线程数,可以更多满足服务请求。
2.增加数据库的连接数,预建立合适数量的TCP连接数
3.后端服务尽量无状态话,可以更好支持横向扩容,满足更大流量要求
4.调用链路上的各个系统和服务尽量不要单点,要从头到尾都是能力对等的,不能让其中某一点成为瓶颈。
5.RPC调用的尽量使用线程池,预先建立合适的连接数。
②减少平均响应时间
1.请求尽量越前结束,越好,这样压力就不要穿透到后面的系统上,可以在各个层上加上缓存
2.流量消峰。放行适当的流量,处理不了的请求直接返回错误或者其他提示。和水坝道理很类似
3.减少调用链
4.优化程序
5.减少网络开销,适当使用长连接
6.优化数据库,建立索引
通俗的讲,如果需要提高并发,需要程序优化,买服务器提高性能,增加带宽提高传输效率,增加缓存将压力前置。
参考:
1、博客园 立峰 https://www.cnblogs.com/data2value/p/6220859.html
2、掘金 AskHarries https://juejin.im/post/5af645f651882567105fd1b2