Tomcat调优参数

本文详细介绍了Tomcat的整体结构、启动流程,并重点解析了Tomcat的线程池配置参数maxThreads和minSpareThreads,以及它们与Java线程池的区别。此外,还讨论了acceptCount和maxConnections参数对最大并发连接数的影响,强调了合理设置这些参数对于Tomcat性能调优的重要性。
摘要由CSDN通过智能技术生成

tomcat的整体结构:

tomcat主要有两个核心的功能:

1.处理socket连接,字节流的request responese转换
2.加载管理servlet

所以 tomcat设计了两个组件:
connector和container
在这里插入图片描述
在这里插入图片描述
容器在xml中是这样呈现的
在这里插入图片描述

tomcat的启动流程

我们纵向观察一下启动流程
在这里插入图片描述

回到正题

默认的tomcat配置主要有:

server.tomcat.accept-count:等待队列长度,默认100
server.tomcat.max-connections:最大可被连接数 默认10000
server.tomcat.max-threads:最大工作线程数 默认200
server.tomcat.min-threads:最小工作线程数 默认10

首先来看线程数:

maxThreads、minSpareThreads是tomcat工作线程池的配置参数。
maxThreads就相当于jdk线程池的maxPoolSize,而minSpareThreads就相当于jdk线程池的corePoolSize。

为什么呢?

tomcat连接器(connector)处理socket相关请求后会放入到线程池中。
tomcat扩展了java原生的线程池。TreadpoolExecutor

回顾一下ThreadpoolExecutor:

public ThreadPoolExecutor(int corePoolSize, //核心线程数
                          int maximumPoolSize, //最大线程数
                          long keepAliveTime, //存活时间
                          TimeUnit unit, //存活时间单位
                          BlockingQueue<Runnable> workQueue, //阻塞队列
                          ThreadFactory threadFactory, //扩展原生的线程工厂,比如给创建出来的线程取个有意义的名字
                          RejectedExecutionHandler handler)//拒绝策略

每次创建任务,没有达到corePoolSize,线程就创建新线程。达到了核心线程数,新建的线程就会放入到workqueue队列中。线程池中的线程通过poll来努力的从队列中拉活干。

如果线程创建的过多,如果w

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值