1

测试过程不要只跑一次

在利用压力测试工具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,那么他们的执行顺序是这样的

  1. loop 1 A t1

  2. loop 1 B t2

  3. loop 2 A t3

  4. loop 2 B t4

  5. ...

  6. loop 10 A t19

  7. loop 10 B t20

结果

  • A的throughput = 10 / (t19 - 开始时间)

  • B的throughput = 10 / (t20 - 开始时间)

看到问题了吧,计算throughput时会把其他的请求的时间一并计算进去。

不要用GUI模式跑

官方文档已经说了。

Thread Group之间cookie不共享

这个是很违反直觉的,但很遗憾事实的确如此。

不要benchmark localhost

压localhost会有两个问题:

  1. Jmeter和web服务器互抢cpu

  2. localhost跳过了网络延迟,测出来的结果远远高于实际部署


chanjarster
4.2k 声望244 粉丝