总结Tomcat优化方法

6 篇文章 0 订阅

在这里插入图片描述

在目前流行的互联网架构中,Tomcat在目前的网络编程中是举足轻重的,由于Tomcat的运行依赖于JVM,从虚拟机的角度把Tomcat的优化分为:

  • Linux内核参数调优
  • JVM调优
  • Tomcat 调优

1. Linux内核参数调优

1.1 打开的文件数量的限制

查看系统允许当前用户进程打开的文件数量的限制:ulimit -n 默认值为1024 。即是Linux操作系统对一个进程打开的文件句柄数量的限制
在这里插入图片描述
ulimit参数含义

参数含义
-H设置硬资源限制,一旦设置不能增加.
-S设置软资源限制,设置后可以增加,但不能超过硬资源设置
-a显示当前所有limit信息
-c最大的core文件大小,以blocks为单位
-d进程最大的数据段大小,以blocks为单位
-f进程可以创造文件的最大值,以kbytes为单位
-l最大可加锁内存大小,以kbytes为单位
-m最大内存大小,以kbytes为单位
-nLinux操作系统对一个进程可以打开最大文件描述符的数量.
-p管道缓冲区大小,以kbytes为单位
-s线程栈大小,以kbytes为单位
-t最大CPU占用时间,以秒为单位
-u用户最大可用的进程数
-v进程最大可用的虚拟机内存,以kbytes为单位.

对于想支持更高数量的TCP并发连接的通讯处理程序,就必须修改Linux对当前用户的进程同时打开的文件数量的软限制(soft limit)和硬限制(hardlimit)。其中软限制是指Linux在当前系统能够承受的范围内进一步限制用户同时打开的文件数;硬限制则是根据系统硬件资源状况(主要是系统内存)计算出来的系统最多可同时打开的文件数量。通常软限制小于或等于硬限制。

配置文件:/etc/security/limits.conf

echo '* soft nofile 655350' >>/etc/security/limits.conf
echo '* hard nofile 655350' >>/etc/security/limits.conf
echo '* soft nproc  655350' >>/etc/security/limits.conf
echo '* hard nproc  650000' >>/etc/security/limits.conf
hard和soft两个值都代表什么意思呢?
soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错

配置完成后重新登录参数生效
在这里插入图片描述
在这里插入图片描述
临时生效方法(重启失效):

ulimit -Hn 65535
ulimit -Sn 65535

在这里插入图片描述
如果只是配置tomcat用户打开文件数:

echo 'tomcat soft nofile 655350' >>/etc/security/limits.conf
echo 'tomcat hard nofile 655350' >>/etc/security/limits.conf
echo 'tomcat soft nproc  655350' >>/etc/security/limits.conf
echo 'tomcat hard nproc  650000' >>/etc/security/limits.conf

1.2 Linux网络内核对TCP连接的有关限制

配置文件:/etc/sysctl.conf

echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf 
echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf 
echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf 
echo "net.ipv4.ip_local_port_range = 10000 65000" >> /etc/sysctl.conf 
echo "net.ipv4.tcp_max_syn_backlog = 8192" >> /etc/sysctl.conf 
echo "net.ipv4.tcp_max_tw_buckets = 10000" >> /etc/sysctl.conf 
echo "net.core.somaxconn=8192" >> /etc/sysctl.conf
sysctl -p

即时生效,不用重启或注销登录
在这里插入图片描述

2. JVM优化

2.1 内存空间优化

配置文件:/usr/local/tomcat/bin/catalina.sh

JAVA_OPTS="-server -Xms4g -Xmx4g -Xss512k -Xmn1g \
-XX:CMSInitiatingOccupancyFraction=65 -XX:+AggressiveOpts \
-XX:+UseBiasedLocking -XX:+DisableExplicitGC \
-XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:PermSize=128m \
-XX:MaxPermSize=512m -XX:CMSFullGCsBeforeCompaction=5 \
-XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC \
-XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled \
-XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m \
-XX:+UseFastAccessorMethods"
参数含义
-server服务器模式
-Xms堆内存初始化大小
-Xmx堆内存空间上限
-XX:NewSize=新生代空间初始化大小
-XX:MaxNewSize=新生代空间最大值

3. Tomcat 调优

配置文件:/usr/local/tomcat/conf/server.xml

3.1 maxThreads 修改

<!--
 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
 maxThreads="150" minSpareThreads="4"/>
  -->

修改为:

<Executor name="tomcatThreadPool"  namePrefix="catalina-exec-"
 maxThreads="1500"  minSpareThreads="50" maxIdleTime="60000"
 prestartminSpareThreads = "true"  maxQueueSize = "100"/>

3.2 maxConnections acceptCount修改

<Connector 
 port="8080" 
 protocol="HTTP/1.1" 
 connectionTimeout="20000" 
 redirectPort="8443" 
 />

修改为

 <Connector executor ="tomcatThreadPool" port="8009" 
 protocol="org.apache.coyote.http11.Http11Nio2Protocol"  
 connectionTimeout="20000" maxConnections="10000"  redirectPort="8443" 
 acceptCount="1500"/>
参数含义
connectionTimeout连接超时时长,单位ms
maxThreads最大线程数,默认200
minSpareThreads最小空闲线程数
maxSpareThreads最大空闲线程数
acceptCount当启动线程满了之后,等待队列的最大长度,默认100
URIEncodingURI 地址编码格式,建议使用 UTF-8
enableLookups是否启用客户端主机名的DNS反向解析,缺省禁用,建议禁用,就使用客户端IP就行
compression是否启用传输压缩机制,建议 “on”,CPU和流量的平衡
compressionMinSize启用压缩传输的数据流最小值,单位是字节
compressableMimeType定义启用压缩功能的MIME类型text/html, text/xml, text/css,text/javascript
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值