我正在使用 Spring Boot 来运行一个安静的 Web 应用程序。它应该每秒处理 1000 个请求,但我发现每约 100 个请求应用程序需要大约 4 秒才能返回答案。我正在使用 Spring boot 版本 1.4.4.RELEASE。
最佳答案
将探查器附加到 JVM 后,我注意到其中一个 tomcat 线程正在更新其缓存(org.apache.catalina.webresources.Cache),增加缓存 ttl 确实如此,但是我在不同版本的 Tomcat 中没有看到此问题 Spring 启动。
@Bean
public EmbeddedServletContainerFactory servletContainer() {
return new TomcatEmbeddedServletContainerFactory() {
@Override
protected void postProcessContext(Context context) {
final int cacheSize = 40 * 1024; // 40 mb
final int ttl = 10 * 60 * 1000; // 10 min
StandardRoot standardRoot = new StandardRoot(context);
standardRoot.setCacheMaxSize(cacheSize);
standardRoot.setCacheTtl(ttl);
// try this if the jar locks
context.setResources(standardRoot);
StandardContext standardContext = (StandardContext) context;
standardContext.setAntiResourceLocking(true);
}
};
}
将 Spring boot 升级到 1.5.8 后问题得到解决。
关于Spring Boot 卡住约 4 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47437212/