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
5.添加监视器,如果只是测试你的主页,那么设置就已经完成了,但是很多时候都要测试多个链接,这时间要添加一个函数
,将多个链接保存到一个txt
文本中,然后随机读取进行压力测试。这个设置有点麻烦,可以自己研究下,也可以评论问我,这里就不再赘述了。
6.点击开始等待下就可以查看测试结果了,为了验证,我把网站的日志也打开了,可以看到我的网站50
个用户同时访问是没啥问题的,就是响应时间有点长了......
7.汇总数据各属性如下:
Sample
每个请求的序号Start Time
每个请求开始时间Thread Name
每个线程的名称Label
Http请求名称Sample Time
每个请求所花时间,单位毫秒Status
请求状态,如果为勾则表示成功,如果为叉表示失败。Bytes
请求的字节数样本数目
也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数平均
每个线程请求的平均时间最新样本
表示服务器响应最后一个请求的时间偏离
服务器响应时间变化、离散程度测量值的大小
8.试下100
个用户,每隔1秒
访问一次,直接修改线程组的数量就可以了。
9.通过结果可以看到,已经凉了,网站承载不了,延迟时间也很长了
10.把redis
开了再试试。
11.开启redis
后,完全没问题,延迟也低了。
12.并发300
试试,不间隔,同时访问
13.牛皮,redis
还是能顶住,但是中间还是有报错的,应该是redis
缓存的错误命中导致的,不过问题不大。
测试结论
本篇文章就只是用了最简单最基础的方式来做并发测试Apache JMeter
的用法还非常的多,包括性能测试,最大并发,接口测试等等,有兴趣的同学可以自己研究下。个人网站启用redis
后确实能非常大程度提高访问性能,但是有个问题还没解决,就先不用了,具体问题在我的关于
里有写到,至今未解决。但是我的网站也不可能会有这么多人同时访问的,所以用不用redis
也没关系了,影响不大。最后说一句,不必一味的追去网站性能,原创自己的技术分享文章才是做个人博客的初心。
10 comments
测试(´இ皿இ`)
你这用了缓存插件,保存访客信息的问题怎么还不好使
老哥,按你的方法试了,确实是可以了,但是只是评论这块没有保存信息,但是我发现cookie还是存在的,没有刷新。
目前正在想办法从cookie入手
不能够吧cookies 是客户浏览器保存的,和你服务器啥关系啊,我那个插入的js你找合适位置插入了么?那个会判断的啊
(´இ皿இ`)(´இ皿இ`) 接口测试有脚本吗?