性能测试技能树

基础:
  完整的性能测试流程
    需求-计划-方案-环境搭建-用例设计-数据准备-场景设计-脚本开发-脚本执行-结果分析-问题反馈-性能调优-结果报告
  性能指标
    TPS,QPS,RPS,HPS,RT,VU,ERROR
  测试类型
    压力测试,负载测试,并发测试,spike测试,稳定性测试,破坏性测试,验收测试
工具:

  jmeter工作原理
  常用的元件,插件
  jmeter如何设计脚本(线程组,各种请求,定时器,参数化,关联,断言)
  jmeter测试报告
  jmete设计典型性能测试场景

其它工具
  wrk,ab,httpload,webbench,siege
服务器/中间件
  JVM原理和配置、堆栈原理、GC原理、FullGc,OOM
  Tomcat配置、使用方法、启动参数配置
  Nginx配置、使用方法
    Dubbo服务注册、消息队列
服务器硬件资源
  cpu,磁盘,网络,内存,load和利用率,IO读写,发包率丢包率
linux性能监听命令
  lscpu,uptime,free,vmstat,mpstat,sysstat,netstat,iostat,pidstat,jstack,jmap
数据库
  锁,索引,读写分离,分库分表,Nosql
线程状态
  就绪(Runnable),运行(Running),阻塞(Blocked)
可能的瓶颈点
  硬件,中间件,程序,操作系统,网络设备
  cpu,内存,磁盘,网络,jvm,线程池,jdbc连接池
OOM异常信息
  OutOfMemoryError: Java heap space (堆内存不够)
  OutOfMemoryError: GC overhead limit exceeded (代码内存过大或死循环)
  OutOfMemoryError: PermGen space (perm内存不够)
  OutOfMemoryError: Direct buffer memory (线程栈太小)

性能测试分析
  错误提示分析
    OutOfMemoryError: Java heap space (堆内存不够)
    OutOfMemoryError: GC overhead limit exceeded (代码内存过大或死循环)
    OutOfMemoryError: PermGen space (perm内存不够)
    OutOfMemoryError: Direct buffer memory (线程栈太小)
指标监控分析
  cpu瓶颈
    响应时间慢
    空闲时间高(idle)
    系统占用高(sys)
    用户占用高(usr)
    运行队列长(r)
    load长期大于cpu个数
  内存瓶颈
    交换率过高(swap)
    系统cpu利用率很高
    内存溢出(OOM)
  磁盘瓶颈
    磁盘利用率高
    等待队列过长(avgqu-sz)
    等待IO的百分比过高(await))
    用于IO的时间比例过高(util)
    缓存命中率过低(buffer cache)
  JVM瓶颈
    fullgc频繁,考虑老年代内存是否太小
    YoungGc频繁,考虑年轻代内存是否太小
    YoungGc时间过长,程序中出现了大对象, 增加 -XX:PretenureSizeThreshold
    GC监控
     jstat -class 类加载统计
     jstat -compiler 编译统计
     jstat -GC 垃圾回收统计
     jstat -gccapacity 堆内存统计
     jstat -gccnew 年轻代垃圾回收统计
     jstat -gccold 老年代垃圾回收统计
     jstat -gcnewcapacity 年轻代内存统计
     jstat -gcoldcapacity 老年代内存统计
     jstat -gcmetacapacity 元空间内存统计
     jstat -gcutil gc整体统计
分段排查定位分析
  服务器硬件瓶颈->网络瓶颈->应用瓶颈->服务器操作系统瓶颈(参数配置)->中间件瓶颈(参数配置,数据库,web服务器等)
优化方法
  使用对象池减少对象创建
  增加本地缓存
  Nosql进行存储
  合并请求
  串行改并行
  同步改异步

 

 

 

戳我>>>性能测试实战分析

posted @ 2019-09-25 22:23  飞天小子  阅读(...)  评论(...编辑  收藏