相差 170 倍,我都怀疑这个基准性能测试 demo 对不对了

2021-02-03 00:28:26 +08:00
 tomsun28

之前开发了一个面向 restful api 的认证鉴权框架 - sureness ,因为他在匹配链这块和 shiro,spring security 不一样没有用 ant 匹配,而是自己改进的一个字典匹配树,之前宣传的时候就说它性能不错但别人问一直没有真正性能测试过。

然后这两天测试了,每个框架一个 demo,都是 springboot 底座提供些 api,再加上对应权限框架的保护,shiro 还好,和原生没有保护的情况性能差 2 倍,但是 spring security 就有点过分了,之前知道它慢,也看过一些大佬文章说它慢,但实际测下来,也太慢了吧,有点怀疑是我写的 demo 问题,按道理慢都是卡在了 ant 过滤链匹配这块,确实我加了 200 个 api ant 匹配链,但为啥 shiro 都不那么慢哎

环境:2 cores, 8 GB xps

下面是测试结果,tps 看 sureness 居然性能高 spring security 170 倍,搞得有点怀疑不敢宣传出去了

benchmark 测试 demo 代码和步骤 - https://github.com/tomsun28/sureness-shiro-spring-security

3256 次点击
所在节点    程序员
8 条回复
uselessVisitor
2021-02-03 08:16:02 +08:00
有理由怀疑你在推广
xuanbg
2021-02-03 08:50:22 +08:00
spring security 本身性能虽然差,但也没这么差。FilterInvocationSecurityMetadataSource 的实现很关键,如果 getAttributes 方法每次都是读数据库的话,性能自然和 shiro 相比就没法看了。

说实在的,我个人认为使用 spring security 没啥实质性的好处。不就一个鉴权吗,绕来绕去的不知道在干啥,还不如自己造个简单的轮子好使。
encro
2021-02-03 09:04:40 +08:00
慢在哪里没分析不出来啊。

所以你还是来做宣传的。

就好比有的框架默认开通 file cache,有的开通 memory cache,
你拿一个 file cache 和一个 memory cache 比,
然后得出性能差一百倍的结论,
其实两个框架可能只需要改一项配置,就能都支持 memory cache 。
cheng6563
2021-02-03 09:26:40 +08:00
@xuanbg 我也觉得 Spring Security 太复杂了,搞大半天配好,过了一个月就完全看不懂配了些啥。想加点功能也无从下手。
tamer
2021-02-03 09:37:25 +08:00
> 按道理慢都是卡在了 ant 过滤链匹配这块

既然有这个思路, 搓 2 行代码, 就可以知道瓶颈是不是这块儿了吧

记得 security 推荐使用的几个 encoder 的密码比对时间是固定的
tomsun28
2021-02-03 10:32:29 +08:00
@beichenhpy 😅😅可能写着写着有点像推广了

@xuanbg 我也感觉不应该这么差 用户信息数据源那块我都是写的代码没有走文件或者数据库,同感 spring security 确实复杂了

@encro 昨晚太晚没有仔细排查,因为这个 spring security demo 就是用的它的 starter 官方配置了 ant 链和账户,都走的内存,非常简单,所以会有疑惑为啥性能会这样

@cheng6563 同感

@tamer 嗯嗯今晚上搓点代码排查下,因为都走的用户和权限配置信息都走的内存,目前能考虑慢的点就是 ant 匹配链和您说的 encoder demo 使用的是 BCryptPasswordEncoder
comcom
2021-02-03 18:22:15 +08:00
一直在关注,加油 gogogo
tomsun28
2021-02-03 21:35:19 +08:00
@comcom 感谢 欢迎使用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/750765

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX