优化Ubuntu Tomcat的JVM参数可以通过修改Tomcat的启动脚本和配置文件来实现。以下是一些关键的优化步骤和参数设置:
catalina.sh
文件在Tomcat的 bin
目录下找到 catalina.sh
文件,并进行如下修改:
# 设置JVM参数
JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewRatio=4 -XX:MaxTenuringThreshold=50 -XX:+DisableExplicitGC"
-server
: 启用服务器模式的JVM。-Xms512m
: 设置初始堆大小为512MB。-Xmx1024m
: 设置最大堆大小为1024MB。-XX:NewSize=512m
: 设置年轻代初始大小为512MB。-XX:MaxNewSize=512m
: 设置年轻代最大大小为512MB。-XX:PermSize=256m
: 设置永久代初始大小为256MB。-XX:MaxPermSize=256m
: 设置永久代最大大小为256MB。-XX:NewRatio=4
: 设置年轻代与老年代的比例为1:4。-XX:MaxTenuringThreshold=50
: 设置对象在年轻代中的最大年龄为50。-XX:+DisableExplicitGC
: 禁用显式垃圾回收调用。server.xml
文件在Tomcat的 conf
目录下找到 server.xml
文件,并进行如下修改:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="200"
minSpareThreads="50"
acceptCount="250"
URIEncoding="UTF-8"
enableLookups="false" />
maxThreads="200"
: 设置Tomcat的最大线程数为200。minSpareThreads="50"
: 设置Tomcat初始化时创建的线程数为50。acceptCount="250"
: 设置当所有线程都在处理请求时,允许排队等待的最大请求数为250。URIEncoding="UTF-8"
: 设置URL编码为UTF-8,避免中文乱码。enableLookups="false"
: 禁用域名反查,提高处理能力。启用垃圾回收日志:
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/tomcat/logs/gc.log"
调整堆内存分配:
根据服务器的物理内存大小调整堆内存分配,一般建议将初始堆大小(-Xms
)和最大堆大小(-Xmx
)设置为物理内存的一半。
JAVA_OPTS="$JAVA_OPTS -Xms512m -Xmx1024m"
调整年轻代和老年代的比例:
JAVA_OPTS="$JAVA_OPTS -XX:NewRatio=4"
ulimit
命令调整系统资源限制在终端中运行以下命令,调整系统资源限制:
ulimit -n 65535 # 调整文件描述符的最大数量
ulimit -u 65535 # 调整用户进程数的最大数量
编辑 /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=60
net.ipv4.tcp_synack_retries=1
net.ipv4.tcp_syn_retries=1
net.ipv4.tcp_fastopen=3
net.ipv4.tcp_keepalive_time=1200
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.tcp_max_tw_buckets=5000
net.ipv4.ip_local_port_range=1024 65535
net.core.netdev_max_backlog=8192
net.core.somaxconn=8192
net.core.rmem_max=12582912
net.core.rmem_default=6291456
net.core.wmem_max=12582912
net.core.wmem_default=6291456
然后运行以下命令使配置生效:
sudo sysctl -p