测试环境: 硬件:MacbookPro 8 核 16G 软件:JMeter 1000 线程每秒,SpringBoot2.2.10
禁用 Spring Security,吞吐量约 20000 左右 启用 Spring Security,吞吐量下降为 5000 左右
Spring Security 里面的逻辑基本都删了,只留了下一些 antMatchers 和 mvcMatchers,大概看了下主要衰减应该就是因为这些 Matchers 。有衰减很正常,但是这衰减幅度很让我吃惊的。
在网上找了一圈,没找到有人谈论这个,难道是我环境有问题?
1
hantsy 2021-01-07 19:15:54 +08:00
一系列的 Filter 上了,肯定影响性能啊。
不需要完全处理,直接跳过去啊。 |
3
xbh1794970183564 2021-01-07 19:33:37 +08:00
mbp 性能这么屌,吞吐能到 2w ?
|
4
KevinBlandy 2021-01-07 19:40:19 +08:00
有些简单的权限,登录。。根本没必要用这个东西,Filter/Intercptor 就能解决。
|
5
qwerthhusn 2021-01-07 19:45:24 +08:00 1
我感觉 Spring Security 太过于复杂了
现在基本上都是做 API 开发,直接一个 Interceptor 拿到 Token 做一下认证鉴权,把用户 id 啥的写到 attribute 里面去,直接就去 Controller 跑代码了,清晰直观。 |
7
VeryZero OP @qwerthhusn 是的,太复杂了。用在好几个项目了,还是没完全玩转。如果这么大性能损耗确实存在,下个项目不想再用了。。
|
8
hantsy 2021-01-07 19:58:51 +08:00
@VeryZero
SpringSecurityConfigurger 中常见的两个方法: configure(WebScurirty) 决定哪些要通过 Spring Security Filter,这个决定哪个路径要不要用 Spring Filter 。一般这里都是过滤掉静态资源( css, js, swagger-ui 等)。 configure(HttpSecurity) 才是安全配置,每个 Path 检测的目的不一样,导致的不同 Filter 应用上去。 |
9
hantsy 2021-01-07 20:00:19 +08:00
@qwerthhusn 你这个玩法可以是可以。自己玩玩没问题的。
|
10
hantsy 2021-01-07 20:04:51 +08:00
性能相差 2-4 倍?我觉得主要取决你的程序复杂度,如果以一个基本的 CRUD,包含数据库操作等等,应该不会那么大。在实际应用中单纯的测试一个纯 Web 层,什么都不做有什么意义?
|
11
alex8 2021-01-07 22:11:24 +08:00
基于 Redis 自己写 AOP 做鉴权
|
12
uselessVisitor 2021-01-08 08:09:44 +08:00
这东西太重了,如果用不到 rbac 就不用了吧。。
|
13
tomsun28 2021-01-08 09:36:02 +08:00
过滤链 ant 匹配问题 记得他和 shiro 都是过滤链一个一个对请求匹配的 可以考虑下 sureness https://github.com/tomsun28/sureness/blob/master/docs/design.md
|
14
xuanbg 2021-01-08 10:06:02 +08:00
路径匹配不要傻乎乎地去遍历,没有路径变量的 url 可以用 hashmap,一下子就从 O(n)变成 O(1)
|
15
fpure 2021-01-08 11:15:34 +08:00
Spring Security 太复杂太难用了,我自己写个过滤器拦截器简单多了,要实现 rbac 也简单。不理解为什么鉴权这么简单的业务大家却要使用这么复杂难用的框架
|
16
cs419 2021-01-08 19:28:11 +08:00
security 的主要运行流程不是很难
坑爹的地方在于 逼着大伙用 配置类去初始化它 http.userdetailService(detailService) http.xxxConfigure http.xxx.disable 等等 这些玩意用起来倒是简单, 想定制的复杂点,就绕的慌,啰嗦的不行 风气就是从 spring boot 那时候搞坏的,xml 的配置方式,啰嗦但结构清晰 到了 boot 的时代,自动化配置类,各种条件装配, 程序的装载是动态化了 想看懂主要结构 头都大了 |
18
Veneris 2021-01-08 21:52:40 +08:00 via iPhone
借楼问一下,做后端管理的权限有没有什么简洁轻量多框架,就是控制角色能看到,访问哪些页面和按钮
|
19
chrisia 2021-03-07 22:14:12 +08:00
你的密码加密方式是不是用了 bcrypt, PBKDF2, scrypt 。这种吞吐量本身很低,但是足够安全,没有任何的框架能够同时满足安全性和性能,可以参考一下 springsecurity 的官方文档。如果在乎性能可以用 SHA-256 这种,但是会有彩虹表攻击的危险。建议适当降低 bcrypt 的安全强度,找到一个平衡点。
|