欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux下Tomcat的性能调优

程序员文章站 2022-06-04 19:37:19
...

一、jvm优化

编辑tomcat 下 bin/catalina.sh,修改JAVA_OPTS参数:根据自己服务器内存实际情况而定

# OS specific support.  $var _must_ be set to either true or false. //下添加
JAVA_OPTS="-server -d64 -Djava.awt.headless=true -Xms2048m -Xmx3000m -Xss1024k -Ddruid.registerToSysProperty=true"

无须打开文件直接执行添加:

sed -i '/#\ OS\ specific\ support/'a\ 'JAVA_OPTS="-server\ -d64\ -Djava.awt.headless=true\ -Xms2048m\ -Xmx3000m\ -Xss1024k\ -Ddruid.registerToSysProperty=true" ' /usr/local/tomcat/bin/catalina.sh

各参数含义:
(1)-server:表示这是应用于服务器的配置,JVM 内部会有特殊处理的 。
(2)-Xms2048m:设置JVM最小内存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
(3)-Xmx3000m:设置JVM最大可用内存。
(4)-Xss1024k: 是每个线程所占用的内存,也就是每个线程的堆栈大小,太小了容易溢出,太大了会导致创建的线程数量减少,因为最大容量是有限的。
(5) -Ddruid.registerToSysProperty=true: 项目使用alibaba的druid连接数据库导致的报错加的参数,异常如下:

线上部署项目的时候日志中出现上述错误,但是本地开发中没有出现。

Tomat报出一下异常:
ERROR [com.alibaba.druid.stat.DruidDataSourceStatManager] – unregister mbean error
javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStat
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean………

二、tomcat优化

1、tomcat高并发配置调优

修改conf/server.xml如下两段配置:

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="700" minSpareThreads="100" maxSpareThreads="400" prestartminSpareThreads = "true" maxQueueSize = "300"/>
================================================================================
<Connector executor="tomcatThreadPool"
port="80"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
acceptCount="500"
connectionTimeout="20000"
redirectPort="8443"
compression="on"
disableUploadTimeout="true"
compressionMinSize="2048"
acceptorThreadCount="2" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
URIEncoding="utf-8"
enableLookups="false"
useURIValidationHack="false"
maxConnections="1000"
tcpNoDelay="true"
/>

linux下Tomcat的性能调优
重点参数解释:
(1)maxThreads:最大并发数,默认设置 200,一般建议在 500 ~ 800,根据硬件设施和业务来判断
(2)minSpareThreads:Tomcat 初始化时创建的线程数,默认设置 25
(3)prestartminSpareThreads:在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就没啥效果了
(4)maxQueueSize:最大的等待队列数,超过则拒绝请求
(5)acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认设置 100
(6)maxConnections:服务器在任何给定时间将接受和处理的最大连接数。当达到这个数字时,服务器将接受,但不处理另一个连接。这个额外的连接将被阻塞,直到正在处理的连接数量低于maxConnections,此时服务器将开始接受并再次处理新的连接。请注意,一旦达到限制,操作系统仍然可以接受基于acceptCount设置的连接。默认值因连接器类型而异。对于BIO,默认值是maxThreads的值,除非使用Executor,在这种情况下,默认值将是执行者的maxThreads的值。对于NIO和NIO2,默认值为10000.对于APR/native,默认值为8192。简单来说就是nio使用maxConnections代替maxThreads。
(7)enableLookups:禁用DNS查询

2、关闭shutdown端口
shown端口是写在Server参数里的,直接去掉是不管用,也是会默认启动的,一般在安全设置时候建议把端口修改为其他端口,shutdown修改为其他复杂字串。实际上这个端口是可以直接屏蔽不监听的。设置时候将其port值修改为-1即可:<Server port="-1" shutdown="SHUTDOWN">

修改/conf/server.xml主配置文件
linux下Tomcat的性能调优
参考文章:相关文章

相关标签: Tomcat tomcat

上一篇: Vue快速入门

下一篇: VUE快速入门