尝试过的方案有:
1,servlet配置load-on-startup的作用–配置spring.mvc.servlet.load-on-startup=1
2,指定配置文件中spring.datasource.druid.initial-size=1,即启动时会初始化数据库连接
3,JDK优化之熵池策略–加启动参数 -Djava.security.egd=file:/dev/./urandom
以上方案均无效
最终有效的解决方案是增加如下配置:
@Configuration
public class EmbeddedTomcatConfiguration {
@Bean
TomcatServletWebServerFactory tomcatFactory() {
return new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
context.setResources(new ExtractingRoot());
}
};
}
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> servletContainerCustomizer() {
return new WebServerFactoryCustomizer<TomcatServletWebServerFactory>() {
@Override
public void customize(TomcatServletWebServerFactory container) {
container.addContextCustomizers(
new TomcatContextCustomizer() {
@Override
public void customize(Context cntxt) {
cntxt.setReloadable(false);
}
});
}
};
}
}
参考链接:
本文介绍了如何解决Spring Boot应用内嵌Tomcat在处理第一个请求时速度慢的问题。尝试了通过servlet配置、数据库初始化和JDK熵池策略优化,但未见效。最终解决方案是在配置中添加自定义的TomcatServletWebServerFactory和WebServerFactoryCustomizer,设置上下文不reloadable,从而显著提高了首次请求的响应速度。
6034

被折叠的 条评论
为什么被折叠?



