接口性能测试的工具很多,比如jmeter,loadrunner,locust,goreplay等等。
大部分的接口压测都是在预发环境完成的,即分离出一台和线上环境一样的机器作为被测机,再备一台压测机,测试单实例所承载的负载。
接口压测的接口协议分为http和rpc协议。
接口压测设计的用例场景:
1.单接口的压测
2.混合接口的压测
3.分时段和分峰值流量的压测
4.梯度压测
接口压测关注的性能指标:
1.CPU占用
2.内存占用
3.磁盘IO
4.网络流量
常见的性能瓶颈有:
1.出现大量的请求超时
2.随着线程数的增多,TPS不升反降
原因:
1.内存持续上涨说明可能存在内存泄漏
2.内存有毛刺,说明可能存在频繁的gc或者对象的创建和删除
3.CPU达到85%,到达性能瓶颈
4.数据库连接超时,大量connectiontimeout
5.IO读写频繁,说明可能存在日志大量读写
6.网络带宽过低,内网,外网带宽有区别,就目前国内各公司的带宽,但一般不会成为瓶颈
如何改进:
1.优化程序,优化架构
2.都优化完了,那就是单实例的最大承载了,只剩下加服务器,加内存了
******线上流量回放**********