虽然我是一个高冷任性的人,以前重现并发问题情愿搞个C语言的多线程程序执行,也不愿意找各种工具,昨天在压测dubbo接口的时候,用了下JMeter,还是挺爽的,果然赶脚自己是第一次用心用这玩意
因为做的是LBS基于位置的服务,因此少不了位置经纬度,当然还有人
这时候调用dubbo接口需要传入三个参数,其中有两个参数希望在并发的时候是在变化的,也就是并发每个线程传入的是不同的参数,至于具体接口内容可以无视
首先创建一个Thread Group,比如命名多线程
这里三个参数可自行修改,1000就是线程数量,也就是并发次数,10是所有线程数执行完成的时间,比如这里的意思就是1000并发将在10秒完成,而不是1秒内完成1000次并发调用,具体可按自己测试指标来进行,Loop Count循环的次数
可以把测试结果给掉出来,具体有各种格式的显示输出,JSON,XML,TXT等
接着就是来编辑具体接口,在Thread Group里Add具体的Sampler
比如看右下角,需要传入三个参数,radius不变,就直接输入常数,也可以jmeter里设置一个变量赋值,更专业一点
对于customerNo,我希望有0~200里随机
选择Options里的Function Helper Dialog
设置随机数最小和最大值,然后生成表达式,传到接口调用的参数里即可
对于center,传入的是经纬度,本来的做法是经纬度都递增0.001,但是好像JMeter里没找到这种浮点数的底层方法,只要采用另一种方法
先将200个线程里传入的经纬度写个脚本脚本生成,类似这种格式
lihui@2018 ~ cat lihui.csv 121.5074590654,31.2344404310 121.5079590654,31.2349404310 121.5084590654,31.2354404310 121.5089590654,31.2359404310 121.5094590654,31.2364404310 121.5099590654,31.2369404310 121.5104590654,31.2374404310 121.5109590654,31.2379404310 121.5114590654,31.2384404310 121.5119590654,31.2389404310 121.5124590654,31.2394404310
然后JMeter还有一种传入csv文件的方式,在这里
然后就可以将刚生成的csv文件导入到JMeter
同时确保csv文件里分隔符和这里配置的分隔符一致,同时这里变量名设置一下,同样逗号分隔
最后在将这两个变量传入到接口调用页面,这样就完成了整个配置