关于性能测试,这些你需要知道

2020-09-04  本文已影响0人  mocobk

性能测试是什么?

性能要求

性能测试应用场景

性能测试类型

性能测试基本概念

模拟用户的真实、峰值和异常的请求量(单位时间的请求数量*单位请求内容大小)去访问系统,监控其性能情况(TPS、响应时间和资源利用率)并获取。

需要准备什么?

环境选择:与线上保持一致

系统环境

执行机环境

测试工具 :与开发技术栈一致

监控软件

场景建模

出发点

需要考虑的问题

场景选取

执行模型

测试过程中有哪些内容?

系统瓶颈分析

整体思路:从前到后,从表象到内部

  1. 首先排除压力机自身的问题,如CPU、内存,网络,脚本编写等
  2. 监控中间件的访问日志,观察响应时间,大体确定耗时处于哪一段
  3. 排查网络问题,监控压力机到后端服务器的网络,以及各服务器间的网络,是否达到网络上限
  4. 监控服务端所有机器的操作系统负载,如CPU、内存、磁盘、网络是否达到瓶颈
  5. 监控应用服务器的日志,查看是否存在ERROR日志,比如TimeOut或其他类型报错
  6. 监控各中间件的连接数,如nginx、tomcat、mysql等,是否达到上限
  7. 监控应用程序线程状态,使用jstack或jvisualvm查看是否有死锁、阻塞等情况
  8. 监控应用程序的jvm,使用jstat或者jmap查看GC情况,是否内存泄漏等
  9. 使用jprofiler监控应用程序,可以查看耗时比较长的代码方法
  10. 监控数据库,是否存在慢查询,一般数据库CPU高都是因为SQL语句效率低造成的
    • 在sql语句前加上explain,可以分析这条sql语句的执行情况 explain select * from teacher
      • Type列可能的值
        Const:表中只有一个匹配行,用到primary key或unique key
        Eq_ref:唯一性索引扫描,key的所有部分被连接联接查询使用,且key是unique或primary key
        ref:非唯一性索引扫描,或只使用了联合索引的最左前缀
        Range:索引范围扫描,在索引列上进行给定范围内的检索,如between,in(1,100)
        Index:遍历索引...
        All:全表扫描
        Prossible key:使用哪个索引能找到行
        Keys:sql语句使用的索引
        rows:mysql 根据索引选择情况,估算查找数据所需读取的行数
    • 联合索引
    • 连接数
    • 数据库架构优化
      • 读写分离,主从配置
      • 硬件调优
  11. 检查数据库执行计划,是否有全表扫描,以及索引不生效的情况
  12. 检查系统外部依赖情况,如果外部依赖系统性能差,也会造成本系统性能低
  13. 对于不好定位的问题,可以考虑采用模块隔离法来确定问题

优化方案

测试注意点

测试报告

上一篇 下一篇

猜你喜欢

热点阅读