性能常识 性能测试技能树

飞天小子的性能课堂 · 2019年10月11日 · 2962 次阅读

完整的性能测试流程

需求 - 计划 - 方案 - 环境搭建 - 用例设计 - 数据准备 - 场景设计 - 脚本开发 - 脚本执行 - 结果分析 - 问题反馈 - 性能调优 - 结果报告

性能指标

重点关注响应时间,吞吐量,错误率
点击查看>>性能指标

测试场景

压力测试,负载测试,并发测试,spike 测试,稳定性测试,破坏性测试,验收测试,失效恢复测试

应用领域

能力验证:测试方法:验收测试,可靠性测试,压力测试,失效恢复测试
规划能力:使性能满足增长的用户数的需求。负载,配置,压力测试
性能调优:确定基准环境,负载,性能指标
瓶颈发现:无可参照的指标,重现和定位性能瓶颈。并发测试
基准比较:敏捷流程,固定迭代,比较结果

性能测试工具

注:重点关注 jmeter 生成压力的原理以及压力场景的设计
点击查看>>jmeter 系列
点击查看>>jjmeter 基础线程组设计压力值
点击查看>>jjmeter 实战分析并发、RPS、RT 公式换算
点击查看>>j 压测实战分析性能拐点
点击查看>>j 负载测试统计超时率
点击查看>>jjmeter 线程与并发数之间的关系
点击查看>>j 深度剖析阶梯加压
点击查看>>j 负载测试保证业务连贯性
点击查看>>spike 测试场景设计

服务器/中间件

JVM

重点关注 GC 原理,GC 频率
点击查看>>jvm 内存空间与 gc 机制
点击查看>>jvm 内存参数设置

Tomcat
点击查看>>tomcat 中间件调优指南

Nginx
点击查看>>nginx 环境配置

Dubbo

服务注册、消息队列

服务器硬件资源

点击查看>>剖析 cpu 负载和 cpu 利用率 重点关注 cpu 负载和利用率关系
点击查看>>剖析 cpu 上下文切换对负载的影响 重点关注上下文切换,系统调用,进程切换
点击查看>>cpu 瓶颈分析思路 全局分析可能导致 cpu 瓶颈的原因
点击查看>>简单聊聊 IO 瓶颈 分析导致 IO 瓶颈的原因
点击查看>>浅析 swap 内存交换 swap 内存交换对性能的影响

linux 性能监听命令

点击查看>>性能测试连载 (27)-服务端性能分析命令

数据库

锁,索引,读写分离,分库分表,Nosql

线程状态

就绪 (Runnable),运行 (Running),阻塞 (Blocked)

错误提示分析

   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 进行存储

合并请求

串行改并行

同步改异步

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 0 条回复 时间 点赞
需要 登录 後方可回應,如果你還沒有帳號按這裡 注册