Apache JMeter

Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件,用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java 对象、数据库, FTP服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
 

安装环境

apache-jmeter运行依赖javajdk|apache-jmeter不需要安装,直接解压出来就可以了.java下载后直接安装就可以了

安装就可以了

 

启动程序

管理员运行文件夹bin目录下的jmeter.bat

管理员运行

实战演示

1.打开程序后,新增一个测试计划,你可以按步骤一步一步设置自己的测试计划,也可以直接下载这个脚本直接打开就可以,记得把内容改了就行,不要一直测我的主页

新增

2.新建立线程,模拟多用户访问,步骤如下

如图设置

3.线程属性设置,字段解释Number of Threads (users):表示模拟多少用户访问,Ramp-up period(seconds):表示访问时间间隔,以秒计算。Loop Count:表示循环次数,如果勾选了Infinite 就表示一直循环不停止,以次数计算。我图中的设置意思表示,模拟50个用户同时访问网站,时间不间隔,循环一次。

线程设置

4.点击创建的线程组,在弹出的菜单中,选择添加->Sampler->Http请求,然后填入你的网站地址,端口80,地址不要加http

添加http请求

添加网站

5.添加监视器,如果只是测试你的主页,那么设置就已经完成了,但是很多时候都要测试多个链接,这时间要添加一个函数,将多个链接保存到一个txt文本中,然后随机读取进行压力测试。这个设置有点麻烦,可以自己研究下,也可以评论问我,这里就不再赘述了。

添加监视器

6.点击开始等待下就可以查看测试结果了,为了验证,我把网站的日志也打开了,可以看到我的网站50个用户同时访问是没啥问题的,就是响应时间有点长了......

返回数据

汇总数据

图形数据

网站日志

7.汇总数据各属性如下:

  • Sample每个请求的序号
  • Start Time每个请求开始时间
  • Thread Name每个线程的名称
  • LabelHttp请求名称
  • Sample Time每个请求所花时间,单位毫秒
  • Status请求状态,如果为勾则表示成功,如果为叉表示失败。
  • Bytes请求的字节数
  • 样本数目也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数
  • 平均每个线程请求的平均时间
  • 最新样本表示服务器响应最后一个请求的时间
  • 偏离服务器响应时间变化、离散程度测量值的大小

8.试下100个用户,每隔1秒访问一次,直接修改线程组的数量就可以了。

100个用户试验

9.通过结果可以看到,已经凉了,网站承载不了,延迟时间也很长了

返回结果

返回结果

10.把redis开了再试试。
开启redis

11.开启redis后,完全没问题,延迟也低了。

开启redis后结果

12.并发300试试,不间隔,同时访问

并发300

13.牛皮,redis还是能顶住,但是中间还是有报错的,应该是redis缓存的错误命中导致的,不过问题不大。

300返回结果

300返回结果

 

测试结论

本篇文章就只是用了最简单最基础的方式来做并发测试Apache JMeter的用法还非常的多,包括性能测试,最大并发,接口测试等等,有兴趣的同学可以自己研究下。个人网站启用redis后确实能非常大程度提高访问性能,但是有个问题还没解决,就先不用了,具体问题在我的关于里有写到,至今未解决。但是我的网站也不可能会有这么多人同时访问的,所以用不用redis也没关系了,影响不大。最后说一句,不必一味的追去网站性能,原创自己的技术分享文章才是做个人博客的初心。

Last modification:December 22, 2020
如果你想请我喝奶茶的话