测试过程不要只跑一次
在利用压力测试工具benchmark的时候,切忌不要让脚本只跑一次,只跑一次的意思是,比如用jmeter创建300个线程,去跑若干个Sampler,只跑一次。
正确的做法应该是去循环跑几次,或者跑一段时间,因为只跑一次结果的偶然性太大,很容易被其他因素干扰导致得出不正确的结果。比如网络延迟1ms的话对结果就是可能是,1000/s和500/s throughput的差别。
不要使用固定的请求参数
尽量不要使用固定的请求参数,而应该将请求参数参数化或者随机化,因为固定的请求参数容易造成JIT优化,得到非常优秀的结果,但这个在实际场景下是不存在的。
Jmeter在循环跑时throughput不准确
将Thread Group设置循环次数 > 1或者执行一段时间时,而正好这个Thread Group有多个Sampler,那么在执行结束后,其throughput结果是不准确的,你会发现各个sampler的throughput结果很接近。下面解释这个问题:
比如你的循环次数是10,有A、B两个Sampler,那么他们的执行顺序是这样的
loop 1 A t1
loop 1 B t2
loop 2 A t3
loop 2 B t4
...
loop 10 A t19
loop 10 B t20
结果
A的throughput = 10 / (t19 - 开始时间)
B的throughput = 10 / (t20 - 开始时间)
看到问题了吧,计算throughput时会把其他的请求的时间一并计算进去。
不要用GUI模式跑
官方文档已经说了。
Thread Group之间cookie不共享
这个是很违反直觉的,但很遗憾事实的确如此。
不要benchmark localhost
压localhost会有两个问题:
Jmeter和web服务器互抢cpu
localhost跳过了网络延迟,测出来的结果远远高于实际部署
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。