概述
什么是压力测试:
-
压力测试考察当前硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。压测都是为了系统在线上的处理能力和稳定性维持在一个标准的范围内,做到心中有数。
-
使用压力财务室,我们有希望找到很多种其他财务室方法很难发现的错误。
-
有两种类型是:内存泄漏、并发同步。
性能指标:
- 响应时间:Response Time:RT
响应时间是指用户从客户端发起一个请求开始,到客户端接收到从服务器返回的响应结束,整个过程所消耗的时间。 - HPS:(hit per second):每秒点击数,单位是秒
- TPS:(transaaction per second):系统每秒处理交易数
- QPS:(query per second):系统每秒处理查询次数
对于互联网行业,如果某些义务有且仅有一个请求连接,那么TPS=QPS=HPS,一般情况下,TPS用来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器的单机请求
- 最大响应时间 :Max response time:指用户发出请求或者指令到系统做出反应的最大时间
- 最小响应时间:Mininum Response Time:指用户发出请求或者指令到系统做出反应的最小时间
- 90%响应时间:90% response time:是指在所有用户的响应时间进行排序,第90%的响应时间
- 从外部看,性能测试主要关注如下三个指标:
吞吐量:每秒钟系统能够处理的请求数、任务数
响应时间:服务处理一个请求或一个任务的耗时
错误率:一批请求中结果出错的请求所占比例
JMeter
下载安装
-
在https://jmeter.apache.org/download_jmeter.cgi下载zip包(如果在windows上 用)
-
解压到一个目录
-
找到
jmeter.bat
,双击打开 -
修改为中文界面
基本使用:
新建线程组
http请求:
获取结果:(主要选上下图框选的三个)
压测分析:
分析:
- 中间件越多,损失越大,大多都损失在网络交互上了
- 业务:
- db(mysql优化)
- 模板渲染速度(缓存)
- 静态资源(nginx动静分离)
优化:
- 模板引擎开缓存
- 经常使用的字段加索引
- 关闭数据库日志打印
- 使用nginx动静分离,tomcat只处理动态请求
- 用redis缓存常用的数据,避免频繁查数据库
问题解决:
address already in use
b站视频:https://www.bilibili.com/video/BV1np4y1C7Yf?p=143
不过我win10系统测试了两万多个请求,没有遇到这个错误: