性能测试策略和关注指标
平常不写博客,跑路时总归得做个总结,不过其他的都是能百度到的东西,只有性能测试的实践算是有自己的体会。
常用的工具是jmeter和locust,各有好坏,个人现在习惯纯代码式的locust,方便场景组合。
性能测试常见场景:
1.新产品架构完成,编码完成 后,测试最大负载和稳定性
2.产品中应用新的组件,测试新组件和旧代码之间的性能差距。如何比较差距,一般是相同条件,在新旧代码分支压测最大负载和稳定性,互相对比。
性能测试中关注的指标:
1.响应时间 ,平均,90%,最大,最小时间。响应慢,查询慢sql.
2.TPS,时间不足,直接压复合场景的话,简单计算单接口tps需要rps*接口数
3.机器性能,CPU,内存,一般70%以下可认为性能问题不大,再往上可能引起后续压测接口报错甚至服务停止
4.如果发现CPU占用非常快,top检查对应的线程占用,是否死循环,GC频繁等
5.内存占用高,是否写的操作太多,是否内存回收设置不合理,导致内存泄漏等
6.其他指标,IO,网络
指标性能好坏可参考下表:
性能项 |
资源 |
评价 |
CPU占用率 |
70% |
好 |
85% |
坏 |
|
90%+ |
很差 |
|
磁盘I/0 |
<30% |
好 |
<40% |
坏 |
|
<50%+ |
很差 |
|
网络 |
<30%带宽 |
好 |
运行队列 |
<2*CPU数量 |
好 |
内存 |
没有页交换 |
好 |
每个CPU每秒10个页交换 |
坏 |
|
更多的页交换 |
很差 |