tomcat9配置优化及使用jdk11的调整

星期四, 2020-03-12 | Author: Lee | JAVA-and-J2EE | 178 views

把常用调整的部分整理记录了下,方便自己以后翻阅和调整

本人实际tomcat9应用中,只注释了conf/server.xml下ajp的服务,新增了bin下的setenv.sh 的JVM配置及spring外置的配置文件

那些调整数值的根据自行配置调整.

1.系统启用nginx+tomcat配合

2.本文主要优化tomcat的配置项目

配置项参考:http://tomcat.apache.org/tomcat-9.0-doc/config/http.html

2.1 关闭AJP端口及war包的热部署

AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。如果tomcat前端放的是apache的时候,会使用到AJP这个连接器。

现在在nginx做反向代理基本上成为一个事实标准,新建的服务已经很少在启用apache的web服务了。

此AJP功能可以禁用,也可以少监听一个8009的端口占用。直接注释即可。

修改$TOMCAT_HOME/conf/server.xml文件

   <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />-->

Tomcat默认是开启了对war包自动部署即热部署,此处可以关闭,防止一些自动启动等未知注入等,把autoDeploy 改为false;

此处可以修改,不建议修改,保持默认即可.

   <Host name="localhost"  appBase="webapps"  unpackWARs="true" autoDeploy="true">
   ##改为
   <Host name="localhost"  appBase="webapps"  unpackWARs="false" autoDeploy="false">

2.2 $TOMCAT_HOME/conf/server.xml配置调整Connector是连接器参数 仅做参考,默认不调整

默认:

  <Connector port="8080" protocol="HTTP/1.1"  
              connectionTimeout="20000"  
              redirectPort="8443" />

示例调整:

 
	<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 
	        enableLookups="false"            
	        maxThreads="10000"               
	        minSpareThreads="1000"                            
	        acceptCount="9000"               
	        disableUploadTimeout="true"              
	        connectionTimeout="20000"               
	        URIEncoding="UTF-8"                           
	        redirectPort="8443" 
	        compression="on"              
	        compressionMinSize="1024"               
	        useSendfile="true"
	        noCompressionUserAgents="gozilla, traviata"            
	 compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript "  />

相关的参数说明:

protocol :处理协议 org.apache.coyote.http11.Http11NioProtocol:调整工作模式为Nio
maxThreads:最大线程数,默认150。增大值避免队列请求过多,导致响应缓慢。
minSpareThreads:最小空闲线程数。
acceptCount:当处理请求超过此值时,将后来请求放到队列中等待。
disableUploadTimeout:禁用上传超时时间
connectionTimeout:连接超时,单位毫秒,0代表不限制
URIEncoding:URI地址编码使用UTF-8
enableLookups:关闭dns解析,提高响应时间
compression:启用压缩功能
compressionMinSize:最小压缩大小,单位Byte
compressibleMimeType :压缩的文件类型

2.3 调整JVM参数部分

修改 $TOMCAT_HOME/bin/catalina.sh 文件

JDK8下的参数的意义,比较现在是主流(已经很多在JDK11被标记删除和废弃了,知识不断在更新中,保持持续学习即可)

-Xms2G 初始分配的堆内存
-Xmx2G 最大允许分配的堆内存,这两个配成一样。
-Xmn512m   年轻代大小

-XX:MetaspaceSize=512M  初始元空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。
-XX:MaxMetaspaceSize=512M

-XX:+UseConcMarkSweepGC    并发标记清除(CMS)收集器

-XX:+CMSClassUnloadingEnabled  

-XX:+HeapDumpOnOutOfMemoryError  表示当JVM发生OOM时,自动生成DUMP文件。
-XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。如果不指定文件名,默认为:java___

-verbose:gc   输出GC日志 ,  -XX:+PrintGC 与 -verbose:gc 是一样的,可以认为-verbose:gc 是 -XX:+PrintGC的别名.

-XX:+PrintGCDetails  打印GC详细信息
-XX:+PrintGCTimeStamps 打印gc时间戳
-XX:+PrintGCDateStamps  
-Xloggc:/appl/gc.log    定义gc日志目录
-XX:CMSInitiatingOccupancyFraction=75    是指设定CMS在对内存占用率达到75%的时候开始GC(因为CMS会有浮动垃圾,所以一般都较早启动GC);

-XX:+UseCMSInitiatingOccupancyOnly    只是用设定的回收阈值(上面指定的75%),如果不指定,JVM仅在第一次使用设定值,后续则自动调整

添加如下: 针对4G内存做如下设置 在JDK8下有效

   JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxNewSize=512m -Dprofile=product -Dresources.config.path=/data/config/ -Ddubbo.registry.ip=1.2.3.4 -Xloggc:/data/gc.log -XX:+UseParNewGC -server -Djava.awt.headless=true"
   #更精简配置
   JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxNewSize=512m -Xloggc:/ia/logs/gc.log -XX:+UseParNewGC -server -Djava.awt.headless=true"
   ###复杂版本针对JDK8下
   JAVA_OPTS="-Xms2G -Xmx2G -Xmn512m -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=512M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/data/gc.log -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly"

启用JDK11看下面即可速简版

或者 $TOMCAT_HOME/bin 新建文件setenv.sh,tomcat启动会自动加载,对2G内存优化配置使用JDK11,UseParNewGC已经无效

JDK11 配置下调整-Xloggc:调整成 -Xlog:gc: 默认使用 Using G1 垃圾回收管理

  CATALINA_OPTS="$CATALINA_OPTS  -Dspring.config.location=/ia/config/pomelolee/IA.properties"
  JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxNewSize=64m -Xlog:gc:/ia/logs/gc.log -server -Djava.awt.headless=true"

Tags: , , ,

文章作者: Lee

本文地址: https://www.pomelolee.com/2051.html

除非注明,Pomelo Lee文章均为原创,转载请以链接形式标明本文地址

No comments yet.

Leave a comment

Search

文章分类

Meta