tomcat9配置优化及使用jdk11的调整
星期四, 2020-03-12 | Author: Lee | JAVA-and-J2EE | 5,457 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" |
文章作者: Lee
本文地址: https://www.pomelolee.com/2051.html
除非注明,Pomelo Lee文章均为原创,转载请以链接形式标明本文地址
No comments yet.
Leave a comment
Search
相关文章
热门文章
最新文章
文章分类
- ajax (10)
- algorithm-learn (3)
- Android (6)
- as (3)
- computer (85)
- Database (30)
- disucz (4)
- enterprise (1)
- erlang (2)
- flash (5)
- golang (3)
- html5 (18)
- ios (4)
- JAVA-and-J2EE (186)
- linux (143)
- mac (10)
- movie-music (11)
- pagemaker (36)
- php (50)
- spring-boot (2)
- Synology群晖 (2)
- Uncategorized (6)
- unity (1)
- webgame (15)
- wordpress (33)
- work-other (2)
- 低代码 (1)
- 体味生活 (40)
- 前端 (21)
- 大数据 (8)
- 游戏开发 (9)
- 爱上海 (19)
- 读书 (4)
- 软件 (3)