Spring Boot冻结约4秒

时间:2017-11-22 14:31:38

标签: spring performance tomcat spring-boot

我正在使用Spring Boot来运行一个安静的webapp。它应该应该每秒处理1000个请求,但是我看到每100个请求应用程序大约需要4秒才能返回答案。我正在使用Spring启动版1.4.4.RELEASE。

1 个答案:

答案 0 :(得分:4)

将探查器附加到JVM之后,我注意到其中一个tomcat线程正在更新它的缓存(org.apache.catalina.webresources.Cache),增加了缓存ttl但是我没有看到这个问题在不同版本的春季启动。

@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启动升级到1.5.8后问题得以解决。