一、启动流程

二、 线程池配置

TomcatmaxConnectionsmaxThreadsacceptCount三大配置,分别表示最大连接数最大线程数、最大等待数,可以通过application.yml配置文件来改变这个三个值,一个标准的示例如下:

server:
  tomcat:
    uri-encoding: UTF-8
    #最大工作线程数,默认200, 4核8g内存,线程数经验值800
    #操作系统做线程之间切换调度是有系统开销的,所以不是越多越好。
    max-threads: 1000
    # 等待队列长度默认100
   accept-count: 1000
    max-connections: 20000
    # 最小工作空闲线程数,默认10, 适当增大一些,以便应对突然增长访问量
   min-spare-threads: 100

tomcatmaxConnections、maxThreads、acceptCount的具体含义是什么呢?参考官方文档,对三者的含义说明如下

1、acceptcount最大等待

官方文档说明为:当所有请求处理线程都在使用时,所能接收连接请求队列的最大长度。当队列已满时,任何的连接请求都将被拒绝acceptcount默认值为100。
详细的来说:当调用HTTP请求数达到tomcat的最大线程数时,还有新的HTTP请求到来,这时tomcat会将该请求放在等待队列中,这个acceptCount就是能够接受的最大等待数,默认100。如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝connection refused)。

2、maxThreads:最大线程数

一次HTTP请求到达Web服务tomcat都会创建一个线程来处理该请求,那么最大线程数决定了Web服务容器可以同时处理多少个请求。maxThreads默认200,肯定建议增加。但是,增加线程是有成本的,更多的线程,不仅仅会带来更多的线程上下文切换成本,而且意味着带来更多的内存消耗。JVM中默认情况下在创建新线程时会分配大小为1M的线程栈,所以,更多的线程异味着需要更多的内存。线程数的经验值为:1核2g内存为200,线程数经验值200;4核8g内存,线程数经验值800。

3、maxConnections:最大连接数

官方文档说明为:

这个参数是指在同一时间tomcat能够接受的最大连接数。对于Java阻塞式BIO,默认值是maxthreads的值;如果在BIO模式使用定制的Executor执行器默认值将是执行器中maxthreads的值。对于Java 新的NIO模式,maxConnections 默认值是10000。
对于windows上APR/native IO模式,maxConnections默认值为8192,这是出于性能原因,如果配置的值不是1024的倍数,maxConnections 的实际值将减少到1024的最大倍数
如果设置为-1,则禁用maxconnections功能表示限制tomcat容器连接数
maxConnections和acceptcount关系为:当连接数达到最大值maxConnections后,系统会继续接收连接,但不会超过acceptCount的值。

参考链接

Tomcat线程池配置_盲目的拾荒者的博客-CSDN博客

tomcat的线程配置 – 简书

https://www.cnblogs.com/rerise/p/16206681.html

原文地址:https://blog.csdn.net/weixin_55229531/article/details/129320428

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_48472.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注