从5000到个位数,tps陡降是因为什么呢?

realily 发布于 04/19 19:44
阅读 1K+
收藏 2

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

项目背景: springboot 2.5.1,JDK11,未使用fastJson,没有慢sql

前景提要:在3.2号压测,tps能稳定5000,Spinrgboot 2.2.3

用JMeter压测项目的4个登录退出相关接口,条件为x个并发线程,都使用super用户进行登录退出。登录相关的数据,包括用户信息等,都会存在Redis缓存中,所以只有第一次登录会查库,后续登录都是直接走缓存。

且从3月2号到如今,代码没有大改动,只有升级了Spring版本大改动。

现在出现的问题就是下图所示的陡降。

1. JMeter服务器和项目服务器的CPU最大负载才50%,排除CPU原因。

2. 只有第一次登录才走数据库,排除数据库连接慢的原因。

3. Redis和项目服务器IP为同一局域网,排除网络原因。

4. 服务器防火墙关闭/尝试更换过服务器,排除服务器原因。

5. 项目JVM一次GC都没发生/尝试设置最大堆为8G,排除JVM原因。

6. 100次/500次/1000次并发的tps都一样,排除脚本原因,排除服务器端口堵塞原因。

7. 接口响应为40ms时,为1000ms时,tps都如图且最终tps结果差值不超过50,排除项目代码原因。

求助各位大佬,排查了4天了,脑袋都疼了,现在我惟一能想到的就是SpringBoot从2.2.3升级到2.5.1,但是这是不是最终原因呢?如果是,那么是因为什么呢?如果不是,又是因为什么?

加载中
0
MyronLee
MyronLee
线程池看看
realily
realily
因为只是4个接口,而且是单机部署,代码也没有锁,就没从线程这方面排查
0
S
SHA-256
排查的很全了,我也没啥思路。jstack看下线程方面有没有什么线索(我瞎猜的) 坐等大佬,坐等结果
0
魔力猫
魔力猫

2.2直接升级2.5,这个spring boot版本升级跨度可有点大,更别说同时也带动了一大堆附属组件的升级!

建议先回归2.2.3,确认是否性能恢复。如果性能问题消失,那么就是本次升级造成的影响。仔细通过官方的升级说明,排查问题吧。另外就是你说的,代码没有大改动,但是也改了。有时候不经意的小改,也会造成大问题。

realily
realily
赞同。代码由我和架构师复查了一天多,实在是看不出来啥了。下午就试试降级Spring
0
f
freezingsky

把版本再降回来。我不认为只是单纯的版本变动 ,就能带来如此大的性能下降。

f
freezingsky
回复 @realily : 那就说明和版本没有关系。让研发自己检查一下吧,说什么代码没动过之类的,最好看一下 提交记录。另外,再检查一下运行的基础环境:cpu、内存、网络等。
realily
realily
版本降了也不行
0
格力高高
格力高高

下降这么大,肯定是某些资源到达限制了。查查redis/mysql连接数,查redis的负载,查主机名与IP的对应。

0
@ccny
@ccny

所有代码块加时间戳输出

0
nonnetta
nonnetta

还是看看线程池吧,例如数据库连接池

0
realily
realily

Jmeter原因。5台jmeter各开100线程一起压测,加起来的tps稳定在4000多。。。。。

kis龍
kis龍
那原来是怎么测试的呢?SpringBoot 2.2.3 版本也是一样测试码
0
kis龍
kis龍

SpringBoot从2.2.3升级到2.5.1

看下升级文档, 应该是哪个细节影响了性能

0
尚浩宇
尚浩宇

jconsole连上去再做压测,观察下下降节点那个时间范围内的线程状态,TPS下降应该是某个原因导致同时进行的线程数下降,其它线程阻塞了,然后看下堆栈一步步排查阻塞原因

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部