Tomcat优化

2023-12-13 22:14:36

目录

1.配置文件优化

2.系统内核优化

3.内核参数配置优化

?4.java虚拟机JVM优化


1.配置文件优化

  • 修改 conf/server.xml 的http连接器配置中添加参数
vim /usr/local/tomcat/conf/server.xml

<Connector port="8080" protocol="HTTP/11.1" 
connectionTimeout="20000" 
redirectPort="8443" 
minSpareThreads="50" 
enableLookups="false" 
disableUploadTimeout="true" 
acceptCount="300" 
maxThreads="500" 
processorCache="500"
URIEncoding="UTF-8" 
maxKeepAliveRequests="100"
compression="on" 
compressionMinSize="2048" 
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"/>

maxTreads            #最大线程数/并发
processorCache       #进程缓冲
acceptCount          #等待队列数?
enableLookups        #关闭DNS反向查询
disableUploadTimeout #关闭上传超时
URIEncoding          #网页字符集编码格式UTF-8
maxKeepAliveRequests #长连接最大请求数
connectionTimeout    #长连接超时时间
compression          #网页压缩

【redirectPort】如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的 8443 端口

【maxThreads】Tomcat使用线程来处理接收的每个请求,这个值表示Tomcat可创建的最大的线程数,即支持的最大并发连接数,默认值是 200。

【minSpareThreads】最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是 10

【maxSpareThreads】最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制)。一般不需要指定。

【processorCache】进程缓冲器,可以提升并发请求。默认值是200,如果不做限制的话可以设置为-1,一般采用maxThreads的值或者-1。

【URIEncoding】指定 Tomcat 容器的 URL 编码格式,网站一般采用UTF-8作为默认编码。

【connnectionTimeout】网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置有隐患的。通常默认 20000 毫秒就可以。

【enableLookups】是否反查域名,以返回远程主机的主机名,取值为:true 或 false,如果设置为 false,则直接返回 IP 地址,为了提高处理能力,应设置为 false。

【disableUploadTimeout】上传时是否使用超时机制。应设置为 true。

【connectionUploadTimeout】上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,以使Servlet有较长的时间来完成它的执行,需要与上一个参数一起配合使用才会生效。


【acceptCount】指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为 100 个。
?

【maxKeepAliveRequests】指定一个长连接的最大请求数。默认长连接是打开的,设置为1时,代表关闭长连接;为-1时,代表请求数无限制
?

【compression】是否对响应的数据进行GZIP压缩,off:表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为 off,压缩数据后可以有效的减少页面的大小,一般可以减小 1/3 左右,节省带宽。
?

【compressionMinSize】表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是 2048。
?

【compressableMimeType】压缩类型,指定对哪些类型的文件进行数据压缩。
?

【noCompressionUserAgents="gozilla, traviata"】对于以下的浏览器,不启用压缩

2.系统内核优化

vim /etc/security/limits.conf              #内核限制文件

* 	soft 	noproc			65535          #打开的进程数
* 	hard 	noproc			65535
* 	soft 	nofile			65535          #打开的文件数
* 	hard 	nofile			65535
* 	soft 	memlock 		unlimited      #不做内存锁定
* 	hard 	memlock 		unlimited

3.内核参数配置优化

vim /etc/sysctl.conf            #内核参数配置文件

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 10000
net.ipv4.tcp_keepalive_time = 1200

?4.java虚拟机JVM优化

#修改 bin/catalina.sh 文件,在 cygwin=false 配置前添加 JAVA_OPTS 参数
vim //usr/local/tomcat/bin/catalina.sh

JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -XX:PermSize=1024m -XX:MaxPermSize=1024m -Xmn768m -XX:ParallelGCThreads=2"
#119行修改

-server  表示启动JDK的Server模式,使得在多核服务器性能更佳
-Xms2048m -Xmx2048m   设置JVM堆内存初始值和最大值为一样大,一般设置为物理内存的1/2
-XX:PermSize=1024m -XX:MaxPermSize=1024m    设置永久代(非堆内存)初始值和最大值为一样大,一般设置为物理内存的1/4
初始值和最大值设置为一样大的原因:可以减少GC(垃圾回收)的次数和内存伸缩带来的频繁内存申请,从而减少一定的系统开销

-Xmn768m   设置JVM堆内存新生代的大小,一般设置为堆内存的3/8
-XX:ParallelGCThreads=2   设置并行GC的线程数,提高垃圾回收效率
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/tomcat/temp/oom.hprof  设置java应用进程发送OOM异常退出会进行DUMP备份
-XX:+DisableExplicitGC   禁止调用System.gc()方法,防止误调用gc方法导致系统的 JVM 大起大落而使系统响应效率严重降低

文章来源:https://blog.csdn.net/Ybaocheng/article/details/134969682
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。