在我的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;
}
}
带有Feigns BasicAuthRequestInterceptor的Feign客户端(另一个Spring Boot应用程序)使用这些API之一。
NewRelic针对Spring的BasicAuthenticationFilter.doFilter()最多使用10秒(!)使用的每个Web服务请求进行报告。
那是巨大的开销。这里有什么问题,我该怎么办才能加快速度?
答案 0 :(得分:0)
我也面临着同样的问题。我的TPS是150个同时线程的40。我们分析了该问题,发现该问题与Bcrypt编码算法有关。将强度更改为较低的值。像下面。
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(4);
}
BCryptPasswordEncoder的默认强度为10。将其减小为4。同时更新密码存储区中的密码。
此外,如果您使用的是HikariCP,请遵循此link来微调最大池大小。
当前,我的TPS是300+,用于2个核心CUP,同时运行300个线程
希望这会有所帮助。谢谢。