•  TPS上不去的原因分析(带宽、中间件-缓存、消息队列、线程池、连接池、异步、慢sql、单表数据量过大(目前订单表最多2个多亿条记录)、应用服务器资源、压力机资源):
  1. 第一个原因:性能测试是从客户端向服务器发起一个请求,要经过网络传输,所以第一个原因可能是网络瓶颈,例如网络不稳定或带宽不够,那么同一时间点的请求量上不去,对服务请求的压力上不去那么这个TPS也就上不去。
  2. 第二个原因:客户端请求与服务器建立链接需要有连接池,连接池有两种 一种常见的是应用连接池,一种是数据库连接池。 应用连接池一个连接建立起来需要用连接通道,如果这个连接通道不够宽不够大,那么连接池可能不够用,导致服务器的性能利用不起来,也就是说应用连接池太小了。
  3. 第三个原因:数据库连接池,应用要与数据库交互时需要用到数据库连接池建立连接,如果数据库的连接池比较小的话,那这个查询速度也比较慢,数据库的综合能力跟不上,也会导致tps上不去。
  4. 第四个资源回收机制是否合理:连接建立起来要进行运算,运算要消耗资源,如果占用资源不能及时回收利用,会导致资源不够,这时tps也上不去。资源一个是硬件资源不够(cpu,内存)
  5. 通常所说的服务器tps值,默认的是http、https协议。但现实中还有websocket协议,如果同一个功能即能用http协议又能用websocket协议实现,那么websocket协议性能要比http协议大很多,tps也就大很多
  6. 性能测试要求的并发量很高,有时需要有做分布式的压力机,如果压力机的资源不够,或压力机的分配不合理,那么tps也上不去,服务性的性能体现不出来
  7. 代码逻辑复杂,代码不够简洁
  8. 还有服务器的架构和缓存机制,也会影响tps
  • 性能是否满足的关键指标
  1. 第一步看错误率是不是超过0.1%,如果超过,认为性能不能满足要求
  2. 第二步看响应时间有没有超过1.5秒,如果平均响应时间超过了1.5秒,认为性能不能满足要求
  3. 第三步看服务器的cpu、内存、io 的使用情况 ,这些平均利用率有没有超过80%,
  • 如何定位网络问题
  1. ping 命令查看下网络延迟时间,如果延迟时间很长可以断定网络问题
  2. 如果Ping命令延迟时间低,这时使用tracepath看路由信息
tracepath www.58.com
 1:  192.168.2.10 (192.168.2.10)                           20.150ms pmtu 1500
 1:  unknown (192.168.2.1)                                  9.343ms
 2:  221.6.45.33 (221.6.45.33)                             34.430ms
 3:  221.6.9.81 (221.6.9.81)                               19.263ms
 4:  122.96.66.37 (122.96.66.37)                           54.372ms
 5:  219.158.96.149 (219.158.96.149)                      asymm  6 128.526ms
 6:  123.126.0.66 (123.126.0.66)                          138.281ms
 7:  124.65.57.26 (124.65.57.26)                          166.244ms
 8:  61.148.154.98 (61.148.154.98)                        103.723ms
 9:  202.106.42.102 (202.106.42.102)                      asymm 10  78.099ms
10:  210.77.139.150 (210.77.139.150)                      asymm  9 199.930ms
11:  211.151.104.6 (211.151.104.6)                        asymm 10 121.965ms
12:  no reply
13:  211.151.111.30 (211.151.111.30)                      asymm 12 118.989ms reached
     Resume: pmtu 1500 hops 13 back 12
  1. 若报连接数不够或连接异常,不是网络问题,发起方的端口配置问题