Tomcat是一个常见的web和servlet容器,在日常开发中可能我们只是会用,写这篇博客的目录是想从整体上认识和了解tomcat
Tomcat的核心组件
作为web容器,我们从浏览器访问,经由tomcat最终到对应的servlet。我们本地访问tomcat的默认页面http://localhost:8080,其中http代表了网络协议,localhost是域名(即站点),8080是端口,共同构成了连接器,默认会访问ROOT这个文件夹,ROOT即为应用上下文,默认访问index.jsp即为资源。由此总结出tomcat主要包括站点、连接器、应用上下文、资源四个部分
连接器
在server.xml定义默认的连接器,这里面定义了端口、HTTP协议的版本。在这里我们只介绍最简单的配置,关于线程池的配置我们后续章节再去介绍。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
站点
默认配置localhost作为默认的站点,当然也可以定义其它域名作为站点,注意这里必须是域名,在server.xml我们可以定义多个站点。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"/>
</Host>
name即为站点的域名,appBase即为当前站点的路径,默认为webapps,当然也可以配置绝对路径。unpackWARs是否自动解压war包,autoDeploy是否自动构建项目。
应用上下文
tomcat默认访问的webapps下面的ROOT文件夹,这个ROOT即为应用的上下文,webapps文件夹下面部署着我们的war包,每个war包解压的文件夹名字即为应用上下文。上节我们提到了站点的概念,对于每个站点,我们可以配置默认访问的上下文的路径,配置参考:
<Context path="..." docBase ="..." ></Context>
path指定Web应用程序的上下文路径。在一个特定的虚拟主机中,所有的上下文路径都必须是唯一的。如果指定一个上下文路径为空字符串(“ ”),则定义了这个虚拟主机的默认Web应用程序,负责处理所有的没有分配给其他Web应用程序的请求。
docBase指定Web应用程序的文档根目录或者WAR文件的路径名。可以指定目录的或WAR文件的绝对路径名,也可以指定相对于Host元素的appBase目录的路径名。
资源
静态资源、动态资源(servlet等),这里不再描述。
Tomcat请求流程
连接器(Connector)->Service->Engine->Host->Context->Wrapper
&emsp这里面的Sevice的作用就是分组,Engine的作用就是作为容器,将host包装起来。Context即为上下文,Wrapper即资源。
Tomcat线程池
这部分是我们经常用到的,尤其是线上一些参数的调优。我们首先了解几个配置参数的含义。
maxThreads
顾名思义业务处理线程的最大数量,并不是实际运行的CPU数量,默认值为200
minSpareThreads
顾名思义,最小业务处理线程数,也就是初始数量
maxConnections
最大连接数
acceptCount
accept队列的长度;当accept队列中连接的个数达到acceptCount时,队列满,进来的请求一律被拒绝。默认值为100
总结
上述参数实际调配情况如下
- 初始时创建minSpareThreads个线程
- 当业务请求的线程大于初始线程数量时,后续业务请求时,会继续创建线程(前提是请求线程数小于maxThreads)
- 请求线程数大于maxThreads时,线程会继续创建,tomcat仍然会接收数据,例如post的表单数据之类的。此时新创建的线程会被放到等待队列
- 随着请求线程数的增加,等待队列里面的线程数继续增加,当超过acceptCount的数量时tomcat会直接拒绝此次请求,返回connection refused
由此可见:tomcat最大连接数取决于maxConnections这个值加上acceptCount
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。