Tomcat组成、基础原理、调优及类加载器介绍

Tomcat是一个服务,包含连接器和容器。连接器监听网络请求,处理字节流并转化为Servlet请求。容器包括Engine、Host、Context、Wrapper,层层处理请求,最终由Servlet执行业务逻辑。调优涉及连接超时、最大线程数等。类加载器包括Bootstrap、System、Common和应用类加载器,按顺序加载类。
摘要由CSDN通过智能技术生成

Tomcat

组成

  • service (对外提供web服务)包含核心功能:负责接收和反馈外部请求连接器Connector

    • 连接器的核心功能:监听网络端口,接收和响应网络请求。 网络字节流处理,将接受到的字节流转换为Tomcat request,再转换为servletRequest给容器,同时将容器传来的ServletResponse转为Tomact Response在转为网络字节流

    • 组件:Endpoint

      • 端点 Acceptor:监听请求

      • handler:处理数据

    • 处理器processor:负责构建Tomcat Request和Response对象

    • 适配器Adapter:实现Tomcat Request、Response和Servlet Request、response的转换

  • 映射器Mapper:根据请求URL地址匹配由哪个容器来处理

  • 负责对内处理业务的容器Container

    • 介绍:每个service包含一个容器。容器由一个引擎管理多虚拟主机,每个虚拟主机可以管理多个web应用,每个web应用多个servlet包装器

      • 组件:Engine:引擎,管理多虚拟主机

      • Host:虚拟主机,负责web应用的部署

      • Context:web应用,包含多servlet封装器

      • wrapper:封装器,对servlet进行封装,负责实例生命周期

      • 总结:容器的请求处理过程就是在engine、host、context、wrapper这四个容器之间层层调用,最后在servlet中执行业务逻辑。各个容器都有通道pipeline,每个通道上都有basic value,类似一个闸门处理request和response

    • Container用于封装和管理Servlet,以及具体处理Request请求,在Connector内部包含了4个子容器,

  • 一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,如同时提供Http和Htps链接,也可以提供向相同协议不同端口的连接示意图如下(Engine、Host、Context下边会说到):

总结   

一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,如同时提供Http和Htps链接,也可以提供向相同协议不同端口的连接示意图如下(Engine、Host、Context下边会说到):

调优

1 connectionTimeout 该参数指定了Tomcat的超时时间,单位为毫秒。

2、maxThreads 该参数指定了Tomcat的最大线程数,默认为200,一般服务器可以设置为5000。 3minSpareThreads 该参数指定了Tomcat的最小空闲线程数。

4、acceptCount 该参数指定了当Tomcat启动进程的数量达到maxThreads参数规定的最大值时,Tomcat队列中允许存储的请求个数,该参数默认为100,一般服务器可以设置为10000。

5enableLooksup 该参数指定Tomcat是否进行DNS查询,一般设置为false,不进行DNS查询以加快处理响应速度

Tomcat启动时的类加载器

1.Bootstrap引导类加载器:加载JVM启动所需类,以及扩展类(jre/lib/ext下)

2.System系统类加载器:加载tomcat启动的类,比如bootstrap.jar,通常在cataline.bat或cataline.sh指定。位于CATALINE_HOME/lib下

3.Common通用类加载器:CATALINE_HOME/lib下,如servlet-api.jar

4.webapp应用类加载器:每个应用在部署后,都会创建一个唯一类加载器。该类加载器会加载位于WEB-INF/lib下的jar和WEB-INF/classes下的class

当应用需要到某个类时,按照下面顺序加载:

1.bootstrap

2.syatem

3、应用类加载器加载WEB-INF/classes

4、应用类加载器加载WEB-INF/lib

5.common类加载器在CATALINE_HOME/lib中加载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HELLO XF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值