tomcat

一、优化

参考官方配置参数信息

http://tomcat.apache.org/tomcat-9.0-doc/config/http.html

${TOMCAT_HOME}/conf/server.xml

1.线程池优化

搜索<Executor name="tomcatThreadPool"】,并开启

 
  1. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

  2. maxThreads="150" minSpareThreads="4"/>

maxThreads :

Tomcat 使用线程来处理接收的每个请求,这个值表示 Tomcat 可创建的最大的线程数,如果未指定,则此属性设置为200

根据自己的实际情况合理设置,设置越大会耗费内存和 CPU,因为 CPU 疲于线程上下文切换,没有精力提供请求服务了

minSpareThreads

最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,如果未指定,10 则使用默认值

然后在

 
  1. <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"

  2. connectionTimeout="20000"

  3. redirectPort="8443" />

启用,当然也可以直接在Connector中设置这些参数

executor:

Executor 元素中的名称的引用。如果设置了此属性,并且存在指定的执行程序,则连接器将使用执行程序,并且将忽略所有其他线程属性。请注意,如果未为连接器指定共享执行程序,则连接器将使用专用的内部执行程序来提供线程池。

 

2.protocol优化

默认值是 HTTP/1.1使用自动切换机制来选择基于Java NIO的连接器或基于APR / native的连接器。如果PATH(Windows)或LD_LIBRARY_PATH(在大多数unix系统上)环境变量包含Tomcat本机库,并且AprLifecycleListener用于初始化APR的useAprConnector属性设置为 true,则将使用APR /本机连接器。如果找不到本机库或未配置该属性,则将使用基于Java NIO的连接器。请注意,APR /本机连接器对HTTPS的设置与Java连接器不同。
要使用显式协议而不是依赖上述自动切换机制,可以使用以下值:
org.apache.coyote.http11.Http11NioProtocol- 非阻塞Java NIO连接器
org.apache.coyote.http11.Http11Nio2Protocol- 非阻塞Java NIO2连接器
org.apache.coyote.http11.Http11AprProtocol- APR /本机连接器。
当然也可以使用定制实现

二、启动

1.tomcat的启动流程

Tomcat中的main入口是org.apache.catalina.startup.Bootstrap#main

2.tomcat在接收到请求的全过程

  1. Connector组件的Acceptor监听客户端套接字连接并接收Socket。
  2. 将连接交给线程池Executor处理,开始执行请求响应任务。
  3. Processor组件读取消息报文,解析请求行、请求体、请求头,封装成Request对象。
  4. Mapper组件根据请求行的URL值和请求头的Host值匹配由哪个Host容器、Context容器、Wrapper容器处理请求。
  5. Engine,Host,Context,Wrapper容器的管道开始处理
  6. 最后执行 Wrapper容器对应的Servlet对象的 处理方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值