性能测试工具 LR 接口测试 TPS 持续下降 (jmeter 正常),lr 偷懒了?

刘玉庆 · 2018年05月04日 · 最后由 刘玉庆 回复于 2018年05月15日 · 3428 次阅读

最近一个微服务接口的性能测试项目,以往经验,正常一个接口的单接口负载的 TPS 能达到 3000 多。
测试某些接口的时候出现了 TPS 持续下降的问题。
测试场景:
1、脚本只有一个 url,一个检查点

Action_classes_login_count()
{
    web_reg_find("TEXT=className",LAST);
    web_url("classes_login_count", 
        "URL=http://{urlIP}:{port}/dataservice/login/login-stats/classes?periodType={periodType}&date={date}&schoolId={schoolId}&gradeId={gradeId}&order={order}&perPage={perPage}&page={page}",
        "Resource=1", 
        "Referer=", 
        "Snapshot=t1.inf", 
        LAST);

    return 0;
}

2、并发数固定(20)
3、没有思考时间,没有日志输出,没有任何逻辑

测试结果:
1、刚开始 TPS 在 3000 多,慢慢的 TPS 一路下坡
2、应用服务器的 CPU 从刚开始的 80% 左右,也是一路下坡
3、lr 测试机的 CPU 确是一路高歌,最后维持到最高 100%

说明:
1、固定并发数 20 的原因是为了控制应用服务器的 cpu 占用率,超过 20 并发时,应用的 cpu 就到 90% 以上了
2、测试机的 CPU 从 4 个调整到 10 个,结果也是一样
3、TPS 下坡的时候,增加 user,可以把 TPS 拉上来,但是,还是会慢慢下去
4、不是所有的接口都是这个现象,同一个服务内,有的正常,有的不正常
5、测试数据是有限的数据进行循环的,如果是一条数据并发的话,没有这个问题
6、换过测试机,重装 LR 测试,还是同样的问题

感觉 LR 发着发着偷懒,不发了,但是为啥发包机的 CPU 还那么高?

jmeter 测试
上面有问题的接口,用 jmeter 测试(场景都一样),问题不存在,TPS 很稳定。

写了那么多,感觉大家会问到的,都说明了吧!各位大拿有没有遇到过?

共收到 8 条回复 时间 点赞

Resource=0
这样应该就行了。

如果正常了,我再来解释。

围观一下

among 回复

谢回!
Resource=0 后还是老样子。

别沉啊!

对应的 日志 有没有异常的?

测试机的 CPU 从 4 个调整到 10 个,结果也是一样

加核数能不能生效不是一定的,要看瓶颈是什么,也许 CPU 都在忙着处理 IO 问题呢
感觉 LR 的 controller 比较重,建议用分布式,比如 4 台 load agent,每个 5 并发再看看

还有,看一下 TPS 掉的时候是不是响应时间变大了,如果是就很正常了,说明 LR 丝毫没有懈怠,有着持续稳定的压力,相反只能说明 JMeter 的效率不够(在偷懒),这种情况下,被测应用扩容之后应该二者就没啥差异了

帮楼主猜问题,就算猜错了也就错了,某些杠精请不要来抬杠

兔白小 回复

您指的是哪方面日志?程序方面日志没有异常啊,慢查询也没有。

槽神 回复

上面我发了一个图,图上看 TPS 下降的时候,响应时间走势变化并不明显。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册