发表于: 2020-01-07 17:31:54
2 1140
啥也不说就是干!!!
今天完成的事情:
1、Jmeter 使用(https://juejin.im/entry/59f7efb3f265da43247fbd2e)
Apache Jmeter 可以用于对静态的和动态的资源(文件、servlet、Perl脚本、Java对象、数据库的查询、FTP服务器等)的性能进行测试。它可用于对服务器、网络或对象模型繁重的负载来测试他们的强度或分析不同压力类型下的整体性能。
1) 下载 Jmeter http://jmeter.apache.org/download_jmeter.cgi
2) 运行 Jmeter
进入 Jmeter 主目录的 bin 子目录下,运行 sh jmeter.sh 脚本即可运行
3) 模拟高并发进行压力测试
建立线程组:要想模拟高并发,线程组必不可少的,所以先创建线程组并配置线程组
参数说明:这里创建了 300 个线程,Ramp-Up Period 参数是为了防止一下子创建 300个线程造成程序假死而设计的,意思是多少秒内创建完指定的线程数
建立一个循环控制器:进行压力测试,不可能只是让一个线程进行一个操作。肯定是让每一个线程循环的往下跑,这里设置为永远,只能手动的停止
设置 http 信息头管理(这一步可以省略,如果测试的网站做了访问限制,只有浏览器可以访问,所以必须指定 User-Agent 去模拟浏览器进行请求)
设置一个固定定时器 这一步的作用是让线程每过多少毫秒进行下一次操作,这里设置 500毫秒,意味着 每个线程 1 秒内可以进行 2 次操作
设置一个 http 请求:这里的参数很好理解,需要注意的是 服务器名称或 ip 也可以直接填写域名,还有路径哪里不需要加域名或服务器 ip
添加图形结果、聚合报告、用表格查看结果、查看结果树
压测任务需求确认:
压测前要明确压测功能和压测指标,一般需要确定几个问题:
1)固定接口参数进行压测还是及恩星接口参数随机化压测
2)要求支持多少并发数
3)TPS(每秒处理事务数)目标多少?响应时间要达到多少
4)压服务器域名还是ip,一般都是压测指定的服务器
压测结果查看:
运行完毕后,聚合报告会显示压测结果。主要观察 Samples、Averge、Error、Throughput
1)Samples:一共发出去多少请求
2)Average:平均响应时间,默认情况下是单个 Request 的平均响应时间(ms)
3)Error%:测试出现的错误请求数量百分比。若出现错误就要看服务器的日志,配合开发查找定位原因
4)Throughput:简称 tps,吞吐量,默认情况下表示每秒处理的请求数。也就是指服务器处理能力,tps 越高说明服务器处理能力越好
2、Linux 下使用 Jmeter (https://blog.csdn.net/sinat_32434273/article/details/81335309)
在真实的压测时候,不可能在本地连接远程的服务器数据库等来测试服务的抗压能力,包括一些网络问题,测试时不准确的,所以就需要在服务器所在的 Linux 本机上进行压测
将下载好的 Jmeter 上传至 Linux 解压并配置环境变量
export JMETER=/usr/local/apache-jmeter-5.2.1
export PATH=${JMETER}/bin/:${PATH}
source /etc/profile
执行 jmeter -v
验证jmeter.sh命令是否可用
[root@localhost jmeter]# cd apache-jmeter-5.2.1/bin
[root@localhost bin]# sh jmeter.sh -v
在 GUI 下写好请求保存为测试脚本
在之前的 Http 请求中加入聚合报告,保存并将 test.jmx 文件上传至要测试的服务器, 将文件传到 /home/test
执行该测试计划:sh jmeter.sh -n -t /home/test/testjmx.jmx -l /home/test/test.jtl
然后将测试计划结果导出到本地,进行查看
查询有点慢,可能是同时访问的线程有点多,不知道加入缓存会不会好点,学完 redis 试一下吧
明天还是用本地测试吧,服务器配置不行(1核1G)
明天计划的事情:
1、学习 Redis,项目整合 Redis
2、对比加缓存和不加缓存的测试结果
遇到的问题:
收获:
学习了 jmeter 的基本使用,大致了解了测试报告的分析指标
评论