SpringBootプロジェクト構成TomcatとJVMパラメータ

3155 ワード

SpringBootプロジェクト構成TomcatとJVMパラメータ
Tomcatポート番号や接続数などの設定
アプリケーションを使用します.propertiesプロファイルには設定できないパラメータがあるので、以下のようにクラスファイルを作成することをお勧めします.

  
  import org.apache.catalina.connector.Connector;
  import org.apache.coyote.http11.Http11NioProtocol;
  import org.springframework.boot.context.embedded.EmbeddedServletContainer;
  import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
  import org.springframework.boot.web.servlet.ServletContextInitializer;
  import org.springframework.stereotype.Component;
  
 @Component
 public class TomcatConfig extends TomcatEmbeddedServletContainerFactory
 {
     public EmbeddedServletContainer getEmbeddedServletContainer(ServletContextInitializer... initializers)
     {
         //    
         this.setPort(8081);
         return super.getEmbeddedServletContainer(initializers);
     }
 
     protected void customizeConnector(Connector connector)
     {
         super.customizeConnector(connector);
         Http11NioProtocol protocol = (Http11NioProtocol)connector.getProtocolHandler();
         //       
         protocol.setMaxConnections(200);
         //       
         protocol.setMaxThreads(300);
         //      
         protocol.setConnectionTimeout(10000);
     }
 }

アプリケーションを使用することもできる.propertiesプロファイルは、次のように構成されますが、接続タイムアウト時間の構成はありません.
#   
server.port=8081
#     
server.tomcat.max-connections=200
#     
server.tomcat.max-threads=300
#    
server.tomcat.uri-encoding=UTF-8
#post        ,   0   
server.tomcat.max-http-post-size=0

実行時にJVMパラメータを設定する
まずMavenを使用してjarファイルにパッケージします
cd /    

mvn clean package

デフォルトのJVM構成で実行
#    ,       
java -jar /jar   

#    
nohup java -jar /jar   

#    ,          
nohub java -jar /jar    > /        

JVMパラメータ実行の構成
#    
java -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar /jar    

nohup java -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar /jar    

パラメータの説明:
-XX:MetaspaceSize=128m (       )

-XX:MaxMetaspaceSize=128m (       )

-Xms1024m (        )

-Xmx1024m (          ,    )

-Xmn256m (     )

-Xss256k (       )

-XX:SurvivorRatio=8 (        8:2)

-XX:+UseConcMarkSweepGC (          ,    CMS   )

 
知識点:JDK 8の後に-XX:PermSizeと-XX:MaxPermGenを除去し、代わりに
-X:MetaspaceSize=128 m(メタスペースのデフォルトサイズ)
-X:MaxMetaspaceSize=128 m(メタ空間最大サイズ)
JDK 8はクラスのメタデータをローカライズされたスタックメモリ(native heap)に配置し始め、この領域をMetaspaceと呼び、中国語ではメタ空間と呼ばれている.
ローカライズされたメモリを使用するメリットは何ですか?最も直接的な表現はjavaです.lang.OutOfMemoryError:PermGen空間の問題はもう存在しません.デフォルトのクラスのメタデータ割り当てはローカルメモリサイズによって制限されています.つまり、ローカルメモリがどれだけ残っているかということです.理論的にはMetaspaceの大きさは(容量はオペレーティングシステムの仮想メモリにも関係しているようですか?ここではよくわかりませんが)、これはスペース不足の問題を解決します.ただし、Metaspaceを無限大にするのは明らかに現実的ではありません.そのため、Metaspaceのサイズも制限します.-XMaxMetaspaceSizeパラメータを使用してMetaspace領域のサイズを指定します.JVMのデフォルトでは、実行時に必要に応じて動的にMaxMetaspaceを設定します.eSizeの大きさ.