在我的Spring Boot 2.0.5应用程序中,我使用基本身份验证来保护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客户端(另一个Spring Boot应用程序(与Feigns BasicAuthRequestInterceptor一起使用。
NewRelic会为Spring的BasicAuthenticationFilter.doFilter((使用的每个Web服务请求报告长达10秒的时间(!(。
这是一笔巨大的开销。这里出了什么问题,我能做些什么来加快速度?
我也面临同样的问题。我的TPS是150个同时线程中的40个。我们分析了这个问题,发现这个问题与Bcrypt编码算法有关。将强度更改为较低的值。如下图所示。
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(4);
}
BCryptPasswordEncoder的默认强度为10。将其减少到4。同时更新密码存储中的密码。
此外,如果您正在使用HikariCP,请点击此链接微调最大池大小。
目前,我的TPS是300+,用于2核CUP,用于300个同时线程
希望这能有所帮助。非常感谢。