tomcat优化

发布时间:2023年12月18日

Tomcat默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面,分别为:

操作系统优化(内核参数优化)

Tomcat配置文件参数优化

Java虚拟机(JVM)调优

tomcat配置文件的参数优化

关于 Tomcat 主配置文件 server.xml 里面很多默认的配置项,并不能满足业务需求,常用的优化参数如下。

vim /usr/local/tomcat/conf/server.xml

在http连接器配置中添加参数 <Connector port="8080"protocol="HTTP/1.1"…… />

常用参数:=后添加的内容
maxTreads最大线程数/并发
processorCache进程缓冲
acceptCount等待队列数
enableLookups关闭DNS反向查询
disableUploadTimeout关闭上传超时
URTEncoding网页字符集编码格式UTF-8
maxKeepAliveRequests长连接最大请求数
connectionTimeout长连接超时时间
compression网页压缩

如果已经对代码进行了动静分离,静态页面和图片等数据就不需要 Tomcat 处理了,那么也就不需要在 Tomcat 中配置压缩了。因为这里只有一台 Tomcat 服务器,而且压测的是Tomcat 首页,会有图片和静态资源文件,所以这里启用压缩。

实际操作如下:

系统内核优化

/etc/securiy/limits.conf 内核限制文件

softnoproc65535打开的进程数
hardnoproc65535
softnofile65535打开的文件数
hardnofile65535
softmemlockunlimited不做内存锁定
hardmemlockunlimited

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

net.ipv4.tcp_syncookies = 1

开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击

net.ipv4.tcp_tw_reuse = 1

开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接

net.ipv4.tcp_tw_recycle = 1

开启TCP连接中TIME-WAIT sockets的快速回收

net.ipv4.tcp_fin_timeout = 30

修改系默认的 TIMEOUT 时间 (MSI值)

net.ipv4.tcp max_tw_buckets = 6000

系统同时保持TIME-WAIT的最人数量

net.ipv4.ip_local_port_range = 1024 65535

外向连接的端口范围,默认为32768 60999

net.ipv4.tcp max_syn_backlog = 65536

系统能接受的tcp半连接的最大队列数,TCP三次提手建立阶段接受SYN请求队列的最大长度

net.core.somaxconn = 65536

每一个端口最大的 isten 监听队列的长度(排队等待接收的最大连接数)

net .ipv4 .tcp_keepalive_time=600

发送keepalive探测包消息的频率,确认客户端是否断网

java虚拟机JVM优化

修改 bin/catalina.sh 文件,在 cygwin=false 配置前添加 JAVA_OPTS 参数
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -XX:PermSize=1024m -XX:MaxPermSize=1024m -Xmn768m -XX:ParallelGCThreads=2"

-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/HanYuHao11/article/details/134972132
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。