接口测试 jmeter 工具压测问题

平仄 · 2022年10月29日 · 最后由 Mr.CHEN 回复于 2022年11月07日 · 8296 次阅读

最近在学习 jmeter
1.分别用阶梯压测插件 Stepping Thread Group 和普通压测跑了相同时间,发现吞吐量差了一倍多,这是什么原因
区别是使用阶梯压测时,单接口使用压测,接口勾选了 keepalive ,发现压测跑了一会之后接口请求报错,查了一下说是端口满了,在服务器看了一下,端口大于默认设定的端口值了,然后把 keepalive 去掉了,可以正常压测了,但是发现压力机到服务区的 tcp 链接数只有 20 几个
阶梯式压测截图:


普通压测截图:

共收到 14 条回复 时间 点赞

你压阶梯和压普通 2 种线程并发量肯定是不一样的,当然吞吐量不一样啊,关注性能的话,还是关注 tps 更直接,吞吐量还受网络因素影响

杨超 回复

我截图里阶梯并发 50 个线程时吞吐量只有 4500 左右,而普通 50 个线程有 13000 的吞吐量,这差异也太大了,这不都是 50 个线程并发吗。

你这截图是 GUI 模式?不是 jmeter 不建议用 GUI 模式跑压测么。。。顺便问问,一个查询接口,返回一个 html 结构,可能几十到几百 k 吧,cpu 内存占用都不高,但是 tps 只有几十,性能问题除了带宽满了之外还可能是什么问题,数据库处理速度吗?

我去催饭 回复

用 GUI 在本地跑方便一点,我电脑性还可以,并且并发需求没那么大,你这我猜是服务器内部处理不过来了,你可以看看服务器的日志有没有报错,或者 JVM 设置的不对

阶梯压测插件影响性能

我去炒饭 回复

要是单纯是插件的锅,那这个插件也太坑了😤

平均响应时间 3ms 的接口,压力有到服务端吗?

YHC 回复

从 TCP 链接数看,压力到服务器端了,就是一个简单的 get 请求,没有参数

关掉 keepalive?可是实际用户不关这个东西吧

这不是还有个 beanshell sampler 吗....顺序的,干了两个活

你的接口平均响应时间本身就很短,勾不勾 keepalive 当然差别会很大,不勾选意味着每一个请求都要重新建立连接(从你的测试结果看完成三次握手的时间,已经相当于一次请求服务响应时间)。另外,端口不够用,尝试修改服务器的的内核参数

平仄 #12 · 2022年11月04日 Author

目前是因为不关 keep-alive 的话,跑 2 分钟 6 万个端口就被占满了,没法压测了。

平仄 #13 · 2022年11月04日 Author
Mr.CHEN 回复

端口数我已经改到 6 万多了,可是还不够用,我猜和这个插件有关,即使我勾选了 keep-alive,这个插件持续在建立新的请求,反而普通压测没有端口数占用的问题,一直是复用的

平仄 回复

1.勾选 keep-alive 的话,每个线程只建立一个连接,超时时间到之后,才会建立新的连接(正常有多少个并发,就有多少个连接),如果后端服务通过 nginx 代理,检查下 nginx 是否开启了 keepalive,以及超时时间配置。
2.按照你的问题描述,在勾选 keep-alive 的时候,根据你的并发量,tcp 连接数达不到 6W+,尽管你的端口配置参数是 6W,但如果通过 nginx 的话,还有文件描述符的问题(默认 1024)
3.你的吞吐量差异原因,不在于插件,就在于是否勾选了 keep-alive

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