SpringBootプロジェクト構成TomcatとJVMパラメータ
3155 ワード
SpringBootプロジェクト構成TomcatとJVMパラメータ
Tomcatポート番号や接続数などの設定
アプリケーションを使用します.propertiesプロファイルには設定できないパラメータがあるので、以下のようにクラスファイルを作成することをお勧めします.
アプリケーションを使用することもできる.propertiesプロファイルは、次のように構成されますが、接続タイムアウト時間の構成はありません.
実行時にJVMパラメータを設定する
まずMavenを使用してjarファイルにパッケージします
デフォルトのJVM構成で実行
JVMパラメータ実行の構成
パラメータの説明:
知識点: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の大きさ.
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の大きさ.