tomcat9_JVM 性能优化

1 Server.xml配置修改

测试:http://192.168.2.220:8015

Connector是连接器,负责接收客户的请求,以及向客户端回送响应的消息。

(1)打开tomcat/conf/server.xml

默认配置:
<Connector port="8080" protocol="HTTP/1.1"  
              connectionTimeout="20000"  
              redirectPort="8443" />  

(2)修改为:

<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 "  />

(3)参数描述:

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

2 JVM 优化

需要基础知识:堆栈内存,jvm 垃圾收集器,jvm 性能监控常用工具,能够读懂gc日志等。

(1)修改 tomcat/bin/catalina.sh (8G 内存机器参考配置):

JAVA_OPTS="-Xms4G -Xmx4G -Xmn1024m -XX:MetaspaceSize=1024M -XX:MaxMetaspaceSize=1024M 
-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError 
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps 
-Xloggc:/appl/gc.log -XX:CMSInitiatingOccupancyFraction=75 
-XX:+UseCMSInitiatingOccupancyOnly"

(2)参数说明

  • -Xms4G 初始分配的堆内存
  • -Xmx4G 最大允许分配的堆内存,这两个配成一样。
  • -Xmn1024m   最小允许分配的堆内存。
  • -XX:MetaspaceSize=1024M  初始元空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。
  • -XX:MaxMetaspaceSize=1024M
  • -XX:+UseConcMarkSweepGC    并发标记清除(CMS)收集器
  • -XX:+CMSClassUnloadingEnabled  
  • -XX:+HeapDumpOnOutOfMemoryError  表示当JVM发生OOM时,自动生成DUMP文件。
  • -XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。如果不指定文件名,默认为:java_<pid>_<date>_<time>_heapDump.hprof。
  • -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仅在第一次使用设定值,后续则自动调整

3 管理AJP端口

AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。如果tomcat前端放的是apache的时候,会使用到AJP这个连接器。由于我们公司前端是由nginx做的反向代理,因此不使用此连接器,因此需要注销掉该连接器。

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

默认 Tomcat 是开启了对war包的热部署的。为了防止被植入木马等恶意程序,因此我们要关闭自动部署。
修改实例:  

<Host name="localhost"  appBase=""    unpackWARs="false" autoDeploy="false">

参考网址:Apache Tomcat 9 Configuration Reference (9.0.84) - The HTTP Connector                                       tomcat 8 9 性能 优化 调优 centos 7 linux_centos7中tomcat9优化配置-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值