压力测试是什么?
压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。
关于JMeter
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
JMeter下载: Apache JMeter - Download Apache JMeter
JMeter打开方式:【apache-jmeter-5.3】 -> 【bin】
JMeter更改中文:
个人认为比较详细的JMeter学习视频: www.bilibili.com/video/BV1ty…
了解几个性能指标
性能指标及定义如下
性能指标 | 定义 |
---|---|
响应时间(Response Time: RT) | 响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间 |
HPS(Hits Per Second) | 每秒点击次数,单位是次/秒 |
TPS(Transaction per Second) | 系统每秒处理交易数,单位是笔/秒 |
QPS(Query per Second) | 系统每秒处理查询次数,单位是次/秒 |
最大响应时间(Max Response Time) | 指用户发出请求或者指令到系统做出反应(响应)的最大时间 |
最少响应时间(Mininum ResponseTime) | 指用户发出请求或者指令到系统做出反应(响应)的最少时间 |
90%响应时间(90% Response Time) | 指所有用户的响应时间进行排序,第 90%的响应时间 |
补充:
- 对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS=QPS=HPS,一般情况下用 TPS 来衡量整个业务流程,用 QPS 来衡量接口查询次数,用 HPS 来表示对服务器单击请求。
- 无论 TPS、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好。
- 性能测试主要关注如下三个指标
- 吞吐量:每秒钟系统能够处理的请求数、任务数。
- 响应时间:服务处理一个请求或一个任务的耗时。
- 错误率:一批请求中结果出错的请求所占比例。
简单测试接口过程
测试接口:http://localhost:8888/user/list (Get请求)
步骤
- 添加线程组并设置测试线程相关内容
- 添加取样器(测试接口)
- 添加监听器(查看测试结果)
还有许多查看方式(这里简单介绍一下察看结果树、汇总报告、聚合报告)
-
察看结果树
-
汇总报告
-
聚合报告
- 可以通过JMeter测试结果获得
- 查看测试结果中出现的错误,确定是否允许错误的发生或者错误率允许在多大的范围内;
- Throughput 吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的往下减,找到最佳的并发数;
- 压测结束,登陆相应的 web 服务器查看 CPU 等性能指标,进行数据的分析;
- 最大的 tps,不断的增加并发数,加到 tps 达到一定值开始出现下降,那么那个值就是最大的 tps。
- 最大的并发数:最大的并发数和最大的 tps 是不同的概率,一般不断增加并发数,达到一个值后,服务器出现请求超时,则可认为该值为最大的并发数。
- 压测过程出现性能瓶颈,若压力机任务管理器查看到的 cpu、网络和 cpu 都正常,未达到 90%以上,则可以说明服务器有问题,压力机没有问题。
- 影响性能考虑点包括:数据库、应用程序、中间件(tomact、Nginx)、网络和操作系统等方面,考虑测试的应用属于CPU密集型(消耗CPU)还是I/O密集型(消耗内存)
解决报错问题
当测试请求很大时,window系统暴露出的一个问题(JMeter Address Already in use)
根据window的官网提供信息进行更改:错误 WSAENOBUFS (10055) - Windows Client | Microsoft Learn
最后再提一句:www.bilibili.com/video/BV1ty… 有详细的JMeter教程。