接口压测实践-压力测试常见参数解释说明

使用场景

对指定接口进行性能测试时,一些常见参数解释说明。

一键并发

可以通过下载最新版的 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%,再考虑逐步增加并发数量。只有增加并发每秒请求数量能持续增加才是健康使用方式。

全部评论

相关推荐

11-25 19:53
湖南大学 Java
字节剪映一面1. 你做的项目是实际有社会上的用户在使用,还是个人兴趣去研究的?2. 你大概能实习多久?3. 实习地点在广州或者深圳,你有了解吗?4. 请整体介绍一下鹿山美食探店平台的整体架构,你是怎么设计的?5. 你都是去云上找的服务器吗?是买的还是其他方式?6. 整个系统分成了几大块?它们的分层架构是怎么样的?7. 这些功能都是你一个人做的吗?8. 你的秒杀功能是怎么设计的?9. 你是怎么得出高并发下乐观锁实现秒杀失败率高的结论?做了压测吗?10. 压测了多少 KPS?11. 1000 个并发下的失败率是多少?12. 你是用 MySQL 去判断库存是否大于 0 吗?13. 改完判断库存的方式后,秒杀成功率有明显提升吗?14. 你用 Redis 减库存时,减到 0 怎么处理?如何防止减出负数?15. 改为 Redis 缓存库存 + 异步下单后,有再进行压测吗?16. 异步下单后,如何让用户实时感知到秒杀成功与否?17. 如果想要提高秒杀的并发量,你还有什么优化措施?18. 库存分段具体怎么分段?19. 针对线上工业级的量,排行榜的更新和查询有什么优化措施?20. 设计全局热榜(更新频繁、查询量大),从更新和查询两方面该怎么设计?21. 千万用户量级下,用户频繁点赞导致 Redis 频繁写,这种情况合理吗?有考虑过相关场景吗?22. 全局热榜查询时,有什么应对高查询量的措施?23. 你在项目中的哪些场景分别解决了缓存穿透、雪崩和击穿的问题?24. 请分别讲解缓存穿透、雪崩和击穿是什么?25. 如何应对缓存穿透?26. 布隆过滤器会有误判吗?27. 缓存雪崩的第一种情况(缓存统一过期)怎么解决?28. 如何解决缓存击穿?29. 热门 key 非常热,全网都来查询,即使有 Redis 缓存也可能爆掉,这种情况怎么处理?30. 多级缓存该如何分布?31. 如何提高一个热门 key 的并发量?32. Java 中的两个等号和 equals 有什么区别?33. 如果 equals 没有实现,默认比较的是什么?34. 用双引号声明的字符串 "ABC" 和 new String("ABC") 用两个等号判断是否相等?35. Java 中的 Volatile 关键字有什么作用?36. Volatile 能保证原子性吗?37. 实际中你平常会用到 Volatile 关键字吗?38. 交替打印是怎么样的实现?多个线程修改变量时需要加锁吗?39. 计算机存储层次从快到慢依次是哪些?40. 二维数组按行和按列遍历,性能会有差别吗?41. TCP 中 TIMEWAIT 状态有什么作用?42. 你对 TCP 的哪些知识还有印象?43. TCP 的全双工能解释一下吗?44. TCP 和 UDP 主要有哪些区别?45. 两条 SQL 语句的性能怎么样?如果不行该怎么优化?46. 模糊匹配时除了把字段反过来存,还有其他更高效的办法吗?47. 深度分页问题该怎么处理?48. 请分别举例出行锁和表锁的触发场景?49. 更新操作一定是行锁吗?有没有什么条件会变成表锁?50. Redis 中的过期删除策略是怎么样的?51. 由 N-1 个正整数组成的未排序数组,元素是 1 到 N 不重复的整数,如何找到缺失的那个数?52. 给定一个先序和中序序列,如何输出后续序列?53. 你对本次面试的项目组主要业务流程有什么想要咨询的吗?54. 你对面试流程(日常实习生)有什么想要咨询的吗?55. 你对简历有什么想要咨询的建议吗?
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务