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中加载