JMeter高并发测试入门指北

废话

刚好最近在研究高并发的优化(不boom)的解决方法,所以涉及到了高并发的测试。
有的参考资料里面会提到用postman的iteration进行高并发测试,但实际上postman的测试是串行的,实际跑下来1000个请求时间拉得很长,服务器气都不喘全都能pass,参考意义不是特别大,但也简单介绍一下。
另外的方法还有用python多线程(requests+gevent)的。
这里主要介绍用Apache出的JMeter工具进行高并发测试。

postman测试

首先要新建一个collection,然后添加要测试的请求
JMeter高并发测试入门指北_第1张图片
然后点击Run,进入Collection Runner界面,设置需要测试的次数(iterations),然后拉到底下点Run就可以
JMeter高并发测试入门指北_第2张图片
然后就能得到结果
JMeter高并发测试入门指北_第3张图片
这里的测试由于是串行的,对服务器的压力非常小,所以得到的结果全部都是pass,没有参考意义

JMeter的安装

进入官网下载 http://jmeter.apache.org/download_jmeter.cgi
直接解压,双击/bin/jmeter.bat运行即可(Windows),linux平台可以使用sh脚本(应该,没试过)。
如果没有Java运行环境的先下载安装Java运行环境 https://www.java.com/zh_CN/download/

然后就能进入JMeter的GUI界面
JMeter高并发测试入门指北_第4张图片
这里需要留意的是,跳出来的命令行不能关掉(废话),而且上面有一个非常重要的提示。
JMeter高并发测试入门指北_第5张图片
不要使用GUI模式进行压力测试,因为这样会消耗大量的内存。
因此这个图形界面只适合用来进行测试,然后再用CLI(命令行)运行进行实际的压力测试。
所以图形界面实际上只是一个编辑器,还能进行一定(非常小)量的测试。

创建一个测试

既然是进行高并发测试,那就要先新建一个线程组(Thread Group)。
右键Test Plan->Add->Threads(Users)->Thread Group
JMeter高并发测试入门指北_第6张图片
然后填入需要测试的量,例如这里100(非正式压力测试时建议填1或10等比较小的值)
JMeter高并发测试入门指北_第7张图片
继续添加请求
右键Thread Group->Add->Sampler->HTTP request
JMeter高并发测试入门指北_第8张图片
这里面按照需要(实际接口)填写就可以了。
需要注意的是,这里直接这样是不行的,会报500,因为没有header
所以还需要添加一个header
右键Thread Group->Add->Config Element->HTTP Header Manager,然后根据需要填写
JMeter高并发测试入门指北_第9张图片
这里因为我后台接收的是json,所以这样写
然后就是取得结果了
同样右键Thread Group->Add->listener->View Results Tree和Summary Report(这里可以根据需要选,因为我目前只需要知道到底这次高并发请求成功了多少,因此只选了这两个)
点击工具栏上的保存,然后就可以点工具栏上的运行了,在下面的结果框里就可以看到测试结果

压力测试

终于进入正题了。前面提到做压力测试时不能在GUI环境里运行,因此需要先在GUI界面先配置好,然后保存成配置文件(.jmx)再在CLI中运行,因此如果需要进行压力测试就可以将前面提到的线程数调大(如1000,10000等),然后保存退出。
打开cmd(或其他CLI),cd到当前目录,然后运行jmeter -n -t st.jmx -l listener.jtl,然后就能生成一个jtl格式的文件,如果要生成一个可视化的结果,还需要jmeter -g listener.jtl -e -o result,就可以在目录里看到一个新的文件夹,打开里面的html就能看到可视化的结果还有一些图表等统计数据。
这里大概展示一下
JMeter高并发测试入门指北_第10张图片

最后的碎碎念

对于研究高并发的瓶颈只看测试的结果还是不太够的,因为它大多数时间只报一个502 Bad Gateway,参考意义不大。可以结合性能统计数据或top/htop/glances这些工具观察服务器在实际经历高并发的时候的运行情况,判断是CPU瓶颈还是IO瓶颈。

你可能感兴趣的:(后台)