性能分析之用户登录TPS低以及CPU被打满问题分析

文章探讨了用户登录功能的复杂性,重点关注加密算法(如BCrypt)对性能的影响。通过性能测试和SkyWalking分析,发现BCrypt加密导致响应时间长。文章提供了MD5与BCrypt的对比实验,并推荐了软件测试资源库以帮助解决这类问题。
摘要由CSDN通过智能技术生成

用户登录说起来只是一个很普通的功能,不过它的逻辑一点也不简单。因为登录过程要对个人的信息进行对比验证,验证过程中又要调用相应的加密算法,而加密算法是对性能要求很高的一种功能。复杂的加密算法安全性高,但性能就差;不复杂的加密算法性能好,但安全性高,这是一个取舍的问题。

按照测试方案的基准场景的设计步骤,先压测这个接口的基准场景。

问题现象

如上图所示,这现象老明显了。

压测结果中的 TPS 平均才 25平均响应时间达到了 993 ms。

分析过程

从性能分析逻辑上来说,针对响应时间长的问题,首先要做的就是拆分时间。由于这个系统已经部署了 SkyWalking,用它看看时间主要消耗在了哪里。

 

看图中,Tomcat 的 SelfDuration 是最多的,也就是说时间几乎消耗在服务本身。

● 全局监控

首先查看下应用服务器的资源水位情况

可以看到4C的CPU资源已经被耗光。

这里部署的是容器,先看下各容器资源使用情况:

 

可以看到资源主要被服务容器消耗了。

服务定向分析

首先进入服务容器查看下资源消耗情况:

在 SkyWaking 中又看不到完整的调用栈,考虑直接连到服务 Java 进程中看方法的时间消耗。这里用 Arthas 来跟踪一下。

查看当前最忙的前N个线程并打印堆栈:

 

这里为程序的业务代码。

于是 trace attemptAuthentication 这个方法。

接着trace authenticate 这个方法。

 

一层层跟踪下去,最终来到了这里: 

 

既然这个 crypt_raw 方法耗时比较长,那就反编译源代码看看这一段是什么东西。

可以看到这里是一个加密算法 BCrypt,那么结论就很明显了 BCrypt 加密算法虽然安全性高,但性能差。

demo验证

这里使用 SpringBoot 实现 MD5 加密和 BCrypt 加密的实例。

 JMeter 并发20 MD5 加密结果:

JMeter 并发20 BCrypt 加密结果:

 

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

  全套资料获取方式:点击下方小卡片自行领取即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值