本地起了一个项目,对 login 登录做了 200 并发的负载测试。发现 tps 最高上升到 550 左右,然后持续的剧烈波动
本着怀疑一切的态度,觉得 tps 应该有上升的空间,于是去监听一下进程。
习惯性的做线程 dump
结果发现一大堆线程阻塞了(BLOCKED)。为什么会阻塞?日志已经很明显提示了,线程疯狂打日志导致的堵塞。
线程为什么会疯狂打日志?这里也提示了,在调用checkLogin方法的时候抛出来的日志。
代码检索
代码拉出来,搜一下checkLogin方法。于是就发现登录这里每一步都打了一条日志。批量处理的时候,很容易就把线程给阻塞了。
现在把这些日志全部禁用掉
重启项目,脚本回归
现在 TPS 上升到了 800 左右