apipost新功能可实现一键压测
接口压测实践
使用场景
对指定接口进行性能测试。
实现方式
为实现高性能的并发需求,使用自研的压测引擎,可以实现一万以上并发。
项目已经开源,github地址:https://github.com/Apipost-Team/runnerGo
压测结果计算方式
压测值 |
含义 |
计算方法 |
总请求数 |
总共发送送请求总数 |
并发数*轮次 |
执行时间 |
压测任务执行时间 |
任务结束时间-任务开始时间 |
成功请求数 |
http请求code为200的请求数量 |
略 |
失败请求数 |
http请求code非200或者连接异常请求数量 |
略 |
错误率 |
压测出错比例 |
失败次数/总请求数 * 1000 |
总接收数据 |
总结接收到数据总字节数 |
累加每次返回结果的字节数量 |
每秒请求数 |
每秒平均请求数量 |
请求总次数/请求总时间 |
每秒成功请求数 |
每秒平均成功请求数量 |
成功请求总次数/成功请求总时间 |
每秒接收字节数 |
每秒接收平均字节数 |
总接收字节数/总请求时间 |
最大响应时间 |
最大请求执行时间 |
所有请求中执行最长的时间 |
最小响应时间 |
最小请求执行时间 |
所有请求中执行最小的时间 |
平均响应时间 |
平均响应时间 |
请求总时间/请求总次数 |
10% |
前10%请求完成时间 |
所有请求花费时间正序排序,取10%位置的执行时间 |
25% |
前25%请求完成时间 |
所有请求花费时间正序排序,取20%位置的执行时间 |
50% |
前50%请求完成时间 |
所有请求花费时间正序排序,取50%位置的执行时间 |
75% |
前75%请求完成时间 |
所有请求花费时间正序排序,取75%位置的执行时间 |
90% |
前90%请求完成时间 |
所有请求花费时间正序排序,取90%位置的执行时间 |
95% |
前95%请求完成时间 |
所有请求花费时间正序排序,取95%位置的执行时间 |
并发结果很容易外界因素影响,压测时需要尽量减少外界因素影响。
影响压测结果外界因素有本机句柄数限制,dns解析速度,网络质量,服务端连接数限制等等。
例如使用1w并发, 很容易出现超过本机最大句柄数限制(一般最大限制1024), 超过句柄数限制的请求会因为句柄数受限导致连接失败。
因此选择合适并发数对测试接口性能非常重要,并非并发数越大越好。
并发数建议先在10, 100, 500, 1000左右分别测试下,如果失败率小于1%,再考虑逐步增加并发数量。只有增加并发每秒请求数量能持续增加才是健康使用方式
试用
一个简单的查询接口,并发数10000,错误率99.32%。