2017-11-22 13 views
2

私は安らかなwebappを実行するために春のブートを使用しています。それは1秒あたり1000要求を処理する必要がありますが、私はすべての〜100要求は、アプリケーションが約4秒かかる答えを返すことを確認します。私はSpringブートバージョン1.4.4を使用しています。〜4秒間の春のブートフリーズ

+0

飽和している基本リソースがありますか? IO/DB /別のもの? GCについてはどうですか? – MichaelB

+0

No.メモリ、ディスク、CPUなどは大丈夫です。 – roizaig

答えて

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); 
     } 
    }; 
} 

スプリングブートを1.5.8にアップグレードすると、問題は解決されます。

関連する問題