当前位置:网站首页>【大型电商项目开发】性能压测-压力测试基本概念&JMeter-38
【大型电商项目开发】性能压测-压力测试基本概念&JMeter-38
2022-07-01 12:45:00 【随意石光】
一:压力测试
- 压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。压测都 是为了系统在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数。
- 使用压力测试,我们有希望找到很多种用其他测试方法更难发现的错误。有两种错误类型是: 内存泄漏,并发与同步。
- 有效的压力测试系统将应用以下这些关键条件:重复,并发,量级,随机变化。
压力测试可以模拟几百万用户同时访问,检测并发量,通过大并发的压力测试发现系统问题。
1.性能指标
- 响应时间(Response Time: RT) 响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响 应结束,整个过程所耗费的时间。
- HPS(Hits Per Second) :每秒点击次数,单位是次/秒。
- TPS(Transaction per Second):系统每秒处理交易数,单位是笔/秒。
- QPS(Query per Second):系统每秒处理查询次数,单位是次/秒。 对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS=QPS=HPS,一 般情况下用 TPS 来衡量整个业务流程,用 QPS 来衡量接口查询次数,用 HPS 来表 示对服务器单击请求。
- 无论 TPS、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好,根据经 验,一般情况下:
金融行业:1000TPS~50000TPS,不包括互联网化的活动
保险行业:100TPS~100000TPS,不包括互联网化的活动
制造行业:10TPS~5000TPS
互联网电子商务:10000TPS~1000000TPS
互联网中型网站:1000TPS~50000TPS
互联网小型网站:500TPS~10000TPS - 最大响应时间(Max Response Time) 指用户发出请求或者指令到系统做出反应(响应) 的最大时间。
- 最少响应时间(Mininum ResponseTime) 指用户发出请求或者指令到系统做出反应(响 应)的最少时间。
- 90%响应时间(90% Response Time) 是指所有用户的响应时间进行排序,第 90%的响
应时间。 - 从外部看,性能测试主要关注如下三个指标
吞吐量:每秒钟系统能够处理的请求数、任务数。
响应时间:服务处理一个请求或一个任务的耗时。
错误率:一批请求中结果出错的请求所占比例。
2.Apache JMeter
1)JMeter安装
https://jmeter.apache.org/download_jmeter.cgi
2)点击bin目录下的jmeter.bat文件
3)JMeter 压测示例
1.添加线程组

线程组参数详解:
- 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里 也就是设置多少个线程数。
- Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果 线程数为 10,准备时长为 2,那么需要 2 秒钟启动 10 个线程,也就是每秒钟启动 5 个 线程。
- 循环次数:每个线程发送请求的次数。如果线程数为 10,循环次数为 100,那么每个线 程发送 100 次请求。总请求数为 10*100=1000 。如果勾选了“永远”,那么所有线程会 一直发送请求,一到选择停止运行脚本。
- Delay Thread creation until needed:直到需要时延迟线程的创建。
- 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为 永远)
- 持续时间(秒):测试持续时间,会覆盖结束时间
- 启动延迟(秒):测试延迟启动时间,会覆盖启动时间
- 启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前 时间也会覆盖它。
- 结束时间:测试结束时间,持续时间会覆盖它。
2.添加 HTTP 请求

3.添加监听器
4.启动压测&查看分析结果
结果分析:
- 有错误率同开发确认,确定是否允许错误的发生或者错误率允许在多大的范围内;
- Throughput 吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机 器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的 往下减,找到最佳的并发数;
- 压测结束,登陆相应的 web 服务器查看 CPU 等性能指标,进行数据的分析;
- 最大的 tps,不断的增加并发数,加到 tps 达到一定值开始出现下降,那么那个值就是 最大的 tps。
- 最大的并发数:最大的并发数和最大的 tps 是不同的概率,一般不断增加并发数,达到 一个值后,服务器出现请求超时,则可认为该值为最大的并发数。
- 压测过程出现性能瓶颈,若压力机任务管理器查看到的 cpu、网络和 cpu 都正常,未达
到 90%以上,则可以说明服务器有问题,压力机没有问题。 - 影响性能考虑点包括: 数据库、应用程序、中间件(tomact、Nginx)、网络和操作系统等方面
- 首先考虑自己的应用属于 CPU 密集型还是 IO 密集型
3.JMeter Address Already in use 错误解决
windows 本身提供的端口访问机制的问题。
Windows 提供给 TCP/IP 链接的端口为 1024-5000,并且要四分钟来循环回收他们。就导致 我们在短时间内跑大量的请求时将端口占满了。 1.cmd 中,用 regedit 命令打开注册表
2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 下,
- 1 .右击 parameters,添加一个新的 DWORD,名字为 MaxUserPort
- 2 .然后双击 MaxUserPort,输入数值数据为 65534,基数选择十进制(如果是分布式运 行的话,控制机器和负载机器都需要这样操作哦)
3 修改配置完毕之后记得重启机器才会生效 https://support.microsoft.com/zh-cn/help/196271/when-you-try-to-connect-from-tcp-ports-grea ter-than-5000-you-receive-t
TCPTimedWaitDelay:30
边栏推荐
- There are risks in trading
- System test UI test summary and questions (interview)
- 微信模拟地理位置_伪装微信地理位置
- Feign & Eureka & Zuul & Hystrix 流程
- PG基础篇--逻辑结构管理(触发器)
- 我花上万学带货:3天赚3元,成交靠刷单
- Wechat applet - 80 practical examples of wechat applet projects
- Quickly understand what the compressed list in redis is
- redis探索之缓存击穿、缓存雪崩、缓存穿透
- Router.use() requires a middleware function but got a Object
猜你喜欢

VS Code 设置单击打开新文件窗口,不覆盖前一个窗口

手机便签应用

Vs code set code auto save

不同的测试技术区分

I spent tens of thousands of dollars to learn and bring goods: I earned 3 yuan in three days, and the transaction depends on the bill

leetcode:226. 翻转二叉树【dfs翻转】

redis探索之缓存击穿、缓存雪崩、缓存穿透

工具箱之 IKVM.NET 项目新进展

王兴的无限游戏迎来“终极”一战

codeforces -- 4B. Before an Exam
随机推荐
Based on the open source stream batch integrated data synchronization engine Chunjun data restore DDL parsing module actual combat sharing
Router.use() requires a middleware function but got a Object
Redis exploration: cache breakdown, cache avalanche, cache penetration
使用BurpSuite对app抓包教程
阿霍的三个阶段
Run PowerShell script prompt "because running script is prohibited on this system" solution
What are the solutions for session sharing of highly paid programmers & interview questions series 118?
手机便签应用
Use Net core access wechat official account development
Quickly understand what the compressed list in redis is
Interpretation of hard threshold function [easy to understand]
用.Net Core接入微信公众号开发
Stack-------
redis探索之缓存击穿、缓存雪崩、缓存穿透
CS5268优势替代AG9321MCQ Typec多合一扩展坞方案
运行Powershell脚本提示“因为在此系统上禁止运行脚本”解决办法
基于开源流批一体数据同步引擎 ChunJun 数据还原 —DDL 解析模块的实战分享
Fiori 应用通过 Adaptation Project 的增强方式分享
木架的场景功能
[today in history] July 1: the father of time sharing system was born; Alipay launched barcode payment; The first TV advertisement in the world