代码之家  ›  专栏  ›  技术社区  ›  saimonsez

基本弹簧身份验证筛选器.doFilter(非常慢)

  •  0
  • saimonsez  · 技术社区  · 6 年前

    在我的Spring Boot 2.0.5应用程序中,我使用basic auth来保护REST-API。

    @Configuration
    @EnableWebSecurity
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
       @Override
       protected void configure(final HttpSecurity http) throws Exception {
           http.authorizeRequests().antMatchers("/api/**").authenticated().and()
           .httpBasic().and().csrf().disable();
       }
       @Bean
       public InMemoryUserDetailsManager inMemoryUserDetailsManager() {
        final InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser("user").password("pwd").roles("roles").build()));
        return manager;
        }
    }
    

    其中一个API被一个带有Feign s BasicAuthRequestInterceptor的Feign客户端(另一个Spring引导应用程序)使用。

    NewRelic为Spring的身份验证筛选器.doFilter()最多使用10秒(!)。

    那是一大笔开销。这里有什么问题,我能做些什么来加快速度?

    0 回复  |  直到 6 年前
        1
  •  0
  •   Khader M A    5 年前

    我也面临同样的问题。我的测试程序集是40对150同时线程。我们分析了问题,发现问题出在Bcrypt编码算法上。将强度更改为较低的值。就像下面。

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder(4);
    }
    

    BCryptPasswordEncoder的默认强度为10。减少到4。同时更新密码存储中的密码。

    另外,如果您正在使用HikariCP,请遵循以下步骤 link 微调最大池大小。

    目前,我的测试程序集是300+为2核杯300同时线程

    希望这有帮助。谢谢您。