头图

压力测试、并发测试实践,后端工程师必看

压测背景
单接口压测是为了能够在开发阶段对单个接口进行性能测试,快速了解接口的承载能力、发现性能瓶颈,在开发早期就能发现问题,消除性能风险。 作为一名优秀的后端工程师,在交付线上环境前,对自己的每一个接口进行简单的性能检测,是一种良好的职业习惯。另外,当业务在生产环境遇到实际接口请求瓶颈时,通过模拟真实的并发环境,也是一种快速寻找问题的方式。

压测结果的影响因素
高并发结果很容易受外界因素影响,压测时需要尽量减少外界因素影响。影响压测结果外界因素有本机句柄数限制,dns解析速度,网络质量,服务端连接数限制等等。例如使用1w并发,很容易出现超过本机最大句柄数限制(一般最大限制1024),超过句柄数限制的请求会因为句柄数受限导致连接失败。

因此选择合适并发数对测试接口性能非常重要,并非并发数越大越好。实际实践中建议并发数先在10,100,500,1000左右分别测试下,如果失败率小于1%,再考虑逐步增加并发数量。只有增加并发每秒请求数量能持续增加才是健康的使用方式。当并发数增加到一定数量后,接口响应能力不再增加或者错误数变高,这时候再增加并发量是无效的。

压测工具
1、Jmeter
Jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,支持http、https、websocket、grpc等协议的并发压测。但缺点在于比较消耗单机性能,一般用于分布式压测或作为压测引擎使用。另外如果只想针对一个接口进行简单测试,需要较深的操作路径,使用起来较为繁琐。

2、ab
ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。但唯一不足的是,ab基本是命令行执行,如果一个接口需要输入较复杂的请求参数,操作起来会比较繁琐。

3、Apipost
自7.0.12版本起,Apipost上线了单接口一键并发功能。该功能底层采用自研的基于Golang语言的压测引擎(已开源:https://github.com/Apipost-Team/runnerGo),比较较好的支持单机高并发压测。目前支持http/https协议,对websocket、grpc等协议尚未支持。
下载:https://www.apipost.cn/download/ver10017

本文简单介绍基于http/https协议的压测实践,出于便捷性考虑,我们采用 Apipost 的压测模块。压测流程1、压测模块位于API调试模块下,在进行接口调试时可以看到,如图所示:
图片
2、在输入被压测的URL后,在压测tab下,填写并发数和轮次;3、点击【开始压测】按钮,页面展示【压测中...】状态;
图片
4、压测任务完成后,页面展示压测结果,完成压测。
图片
压测结果计算方式
图片

我不是大神,helloworld!

1 声望
0 粉丝
0 条评论
推荐阅读
用RunnerGo简化性能测试流程
在软件开发过程中,测试是一个重要的环节,需要投入大量时间和精力来确保应用程序或网站的质量和稳定性。但是,随着应用程序变得更加复杂和庞大,传统的测试工具在面对比较繁琐的项目时非常费时费力。这时一些自...

大雨治水阅读 248

最好用的 python 库合集
🎈 分词 - jieba优秀的中文分词库,依靠中文词库,利用词库确定汉子之间关联的概率,形成分词结果 {代码...} 🎈 词云库 - wordcloud对数据中出现频率较高的 关键词 生成的一幅图像,予以视觉上的突出 {代码...} 🎈 ...

tiny极客11阅读 3.4k评论 2

封面图
花了几个月时间把 MySQL 重新巩固了一遍,梳理了一篇几万字 “超硬核” 的保姆式学习教程!(持续更新中~)
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

民工哥14阅读 1.9k

封面图
算法可视化:一文弄懂 10 大排序算法
在本文中,我们将通过动图可视化加文字的形式,循序渐进全面介绍不同类型的算法及其用途(包括原理、优缺点及使用场景)并提供 Python 和 JavaScript 两种语言的示例代码。除此之外,每个算法都会附有一些技术说...

破晓L7阅读 851

封面图
「刷起来」Go必看的进阶面试题详解
逃逸分析是Go语言中的一项重要优化技术,可以帮助程序减少内存分配和垃圾回收的开销,从而提高程序的性能。下面是一道涉及逃逸分析的面试题及其详解。

王中阳Go4阅读 1.9k评论 1

封面图
架构设计-高性能篇
大家好,我是易安!今天我们谈一谈架构设计中的高性能架构涉及到的底层思想。本文分为缓存架构,单服务器高性能模型,集群下的高性能模型三个部分,内容很干,希望你仔细阅读。

架构狂人4阅读 753

简历上的项目,需要这样描述才有亮点!
每每准备面试,总有些小伙子甩出自己的豆包项目,不是Xxx管理系统,就是某某自动化平台。就像这几年自己的经历都放在 CRUD 编写上了,走的那是加班的道,干的都是体力的活。

小傅哥4阅读 1.1k

封面图

我不是大神,helloworld!

1 声望
0 粉丝
宣传栏