V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
VeryZero
V2EX  ›  程序员

使用 Spring Security 后性能相差 2-4 倍?是我自己的问题吗?

  •  
  •   VeryZero · 57 天前 · 1911 次点击
    这是一个创建于 57 天前的主题,其中的信息可能已经有所发展或是发生改变。

    测试环境: 硬件:MacbookPro 8 核 16G 软件:JMeter 1000 线程每秒,SpringBoot2.2.10

    禁用 Spring Security,吞吐量约 20000 左右 启用 Spring Security,吞吐量下降为 5000 左右

    Spring Security 里面的逻辑基本都删了,只留了下一些 antMatchers 和 mvcMatchers,大概看了下主要衰减应该就是因为这些 Matchers 。有衰减很正常,但是这衰减幅度很让我吃惊的。

    在网上找了一圈,没找到有人谈论这个,难道是我环境有问题?

    18 条回复    2021-01-08 21:52:40 +08:00
    hantsy
        1
    hantsy   57 天前
    一系列的 Filter 上了,肯定影响性能啊。

    不需要完全处理,直接跳过去啊。
    xbh1794970183564
        3
    xbh1794970183564   57 天前
    mbp 性能这么屌,吞吐能到 2w ?
    KevinBlandy
        4
    KevinBlandy   57 天前
    有些简单的权限,登录。。根本没必要用这个东西,Filter/Intercptor 就能解决。
    qwerthhusn
        5
    qwerthhusn   57 天前
    我感觉 Spring Security 太过于复杂了

    现在基本上都是做 API 开发,直接一个 Interceptor 拿到 Token 做一下认证鉴权,把用户 id 啥的写到 attribute 里面去,直接就去 Controller 跑代码了,清晰直观。
    VeryZero
        6
    VeryZero   57 天前
    @hantsy 他需要通过路径匹配决定是跳过还是进行权限校验。我感觉慢就慢在路径匹配这一步。具体是不是明天接着测
    VeryZero
        7
    VeryZero   57 天前
    @qwerthhusn 是的,太复杂了。用在好几个项目了,还是没完全玩转。如果这么大性能损耗确实存在,下个项目不想再用了。。
    hantsy
        8
    hantsy   57 天前
    @VeryZero
    SpringSecurityConfigurger 中常见的两个方法:

    configure(WebScurirty) 决定哪些要通过 Spring Security Filter,这个决定哪个路径要不要用 Spring Filter 。一般这里都是过滤掉静态资源( css, js, swagger-ui 等)。

    configure(HttpSecurity) 才是安全配置,每个 Path 检测的目的不一样,导致的不同 Filter 应用上去。
    hantsy
        9
    hantsy   57 天前
    @qwerthhusn 你这个玩法可以是可以。自己玩玩没问题的。
    hantsy
        10
    hantsy   57 天前
    性能相差 2-4 倍?我觉得主要取决你的程序复杂度,如果以一个基本的 CRUD,包含数据库操作等等,应该不会那么大。在实际应用中单纯的测试一个纯 Web 层,什么都不做有什么意义?
    alex8
        11
    alex8   57 天前
    基于 Redis 自己写 AOP 做鉴权
    beichenhpy
        12
    beichenhpy   57 天前
    这东西太重了,如果用不到 rbac 就不用了吧。。
    tomsun28
        13
    tomsun28   57 天前
    过滤链 ant 匹配问题 记得他和 shiro 都是过滤链一个一个对请求匹配的 可以考虑下 sureness https://github.com/tomsun28/sureness/blob/master/docs/design.md
    xuanbg
        14
    xuanbg   57 天前
    路径匹配不要傻乎乎地去遍历,没有路径变量的 url 可以用 hashmap,一下子就从 O(n)变成 O(1)
    fpure
        15
    fpure   57 天前
    Spring Security 太复杂太难用了,我自己写个过滤器拦截器简单多了,要实现 rbac 也简单。不理解为什么鉴权这么简单的业务大家却要使用这么复杂难用的框架
    cs419
        16
    cs419   56 天前
    security 的主要运行流程不是很难
    坑爹的地方在于 逼着大伙用 配置类去初始化它
    http.userdetailService(detailService) http.xxxConfigure http.xxx.disable 等等
    这些玩意用起来倒是简单, 想定制的复杂点,就绕的慌,啰嗦的不行

    风气就是从 spring boot 那时候搞坏的,xml 的配置方式,啰嗦但结构清晰
    到了 boot 的时代,自动化配置类,各种条件装配, 程序的装载是动态化了
    想看懂主要结构 头都大了
    echo1937
        17
    echo1937   56 天前
    @cs419 #16 一样的配置,用 Java Config 绝对比 XML 简单有效
    Veneris
        18
    Veneris   56 天前 via iPhone
    借楼问一下,做后端管理的权限有没有什么简洁轻量多框架,就是控制角色能看到,访问哪些页面和按钮
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2772 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:00 · PVG 19:00 · LAX 03:00 · JFK 06:00
    ♥ Do have faith in what you're doing.