tomcat调优(转)

本文主要介绍了Tomcat的调优方法,包括动静分离、线程池配置、连接器调优、运行模式选择、JVM调优以及在SpringBoot中进行Tomcat调优。通过动静分离减少Tomcat的性能损耗,合理配置线程池参数,关闭DNS解析以提升性能,调整连接器参数以优化连接处理,选择合适的运行模式,以及调整JVM参数以优化内存使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:https://www.cnblogs.com/myseries/p/11480203.html

1.动静分离

静态资源如果让tomcat处理的话tomcat的性能会被损耗很多,所以我们一般都是采用:nginx+tomcat实现动静分离,让 Tomcat 只负责 jsp 文件的解析工作,nginx实现静态资源的访问。
(springboot好像没法这样操作)

2.线程池调优

打开serve.xml
配置Executor

在这里插入图片描述
参数解释
name 给执行器(线程池)起一个名字
namePrefix 指定线程池中的每一个线程的name前缀
maxThreads 线程池中最大的线程数量
如果请求过多,不要在单个tomcat中设置过高的maxThreads数量,而是应该去考虑tomcat集群
minSpareThreads 线程池中允许空闲的线程数量(多余的线程都杀死)
maxIdLeTime 一个线程空闲多久算是一个空闲线程
上面两个参数没什么,主要是下面三个,最大线程数,最大空闲线程数,空闲线程时间定义

3.连接器Connector调优

打开tomcat的serve.xml
配置Connector

在这里插入图片描述
executor 指定这个连接器所使用的执行器(线程池)
哦,所以刚才的name属性还是有用的……,可以知道是哪个executor用的
在这里插入图片描述
enableLookups=“false” 关闭dns解析,减少性能损耗
connectionTimeout 连接超时时间
acceptCount=“1000” 线程池中的线程都被占用,允许放到队列中的请求数
maxThreads=“3000” 最大线程数
minSpareThreads=“20” 最小空闲线程数,这里是一直会运行的线程
和压缩有关系的配置
如果已经对代码进行了动静分离,静态页面和图片等数据就不需要 Tomcat 处理了,
那么也就不需要配置在 Tomcat 中配置压缩了

<Connector port="8080"
        protocol="HTTP/1.1" 
        connectionTimeout="20000" ##超时时间,毫秒,这里是20秒
        redirectPort="443" 
        maxThreads="3000" ##最大线程数
        minSpareThreads="20" ##最小空闲线程数,这里是一直会运行的线程
        acceptCount="1000" ##接收的队列数
        enableLookups="false" ##关闭dns解析,减少性能损耗
        server="None"               
        URIEncoding="UTF-8"   
      />

4.运行模式调优

1.BIO与NIO
BIO就是使用的http1.1协议,也就是protocol=“HTTP/1.1”
tomcat8之后自动默认是使用nio的
2.APR
是Tomcat生产环境运行的首选方式
如果操作系统未安装apr或者apr路径未指到Tomcat默认可识别的路径,
则apr模式无法启动,自动切换启动nio模式。
所以必须要安装apr和native,直接启动就支持apr
apr是从操作系统级别解决异步IO问题,apr的本质就是使用jni(java native interface)技术调用操作系统底层的IO接口,所以需要提前安装所需要的依赖

5.JVM调优

在catalina.sh上加入JAVA_OPTS= …去调整tomcat的JVM参数
如JAVA_OPTS="-server -XX:PermSize=512M -XX:MaxPermSize=1024m -Xms2048m -Xmx2048m
其中
-server:启用 JDK的 server 版本;
-Xms:Java虚拟机初始化时堆的最小内存,一般与 Xmx配置为相同值,这样的好处是GC不必再为扩展内存空间而消耗性能;
-Xmx:Java虚拟机可使用堆的最大内存;
-XX:PermSize:Java虚拟机永久代大小;
-XX:MaxPermSize:Java虚拟机永久代大小最大值;
还有比如调整堆大小,垃圾回收机制等,这些就都是JVM的内容了

6.springboot上tomcat调优

springboot中内置了tomcat,所以肯定直接在application.yml里面修改就行了
格式大概如下
在server.comcat下配置

# Tomcat
server:
  tomcat:
    uri-encoding: UTF-8
    #最小线程数
    min-spare-threads: 500
    #最大线程数
    max-threads: 2500
    #最大链接数
    max-connections: 6500
    #最大等待队列长度
    accept-count: 1000
    #请求头最大长度kb
    max-http-header-size: 1048576
    #请请求体最大长度kb
    #max-http-post-size: 2097152
  #服务http端口
  port: 8080
  #链接建立超时时间
  connection-timeout: 12000
  servlet:
    #访问根路径
    context-path: /song

在高并发下:要增大最大线程,最大连接,增大最大等待队列长度,增大连接超时时间,在最开始要有足够的线程保证,启动的时候,如果有大量用户来,tomcat也不会被压垮。

等待队列长度,最大线程数,最小空闲线程数,最大连接数,连接超时时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值