1. 体系结构
Tomcat 服务器是由一系列可配置的组件构成的,其中核心组件是Catalina Servlet容器,它是所有其他组件的顶层容器。
(1)Server 表示整个的Catalina Servlet容器,可以包含一个或多个 Service 组件。
(2)Service 组件将一个或多个连接器组件(Connector)绑定到一个 Servlet 引擎(Engine)上。
(3)Connector 组件负责与客户端通信,负责接收客户端请求,以及返回响应结果给客户端。
(4)Engine 组件从 Connector 接收和处理所有的请求,将响应返回给 Connector,最终通过 Connector 传送给客户端。每个 Service 组件只能包含一个 Engine。
(5)Host 表示一个虚拟主机,一个引擎可以包含多个 Host。
(6)Context 表示一个 Web 应用程序,运行在特定的虚拟主机中。一个 Host 可以包含一个或多个 Context。
2. 性能调优
tomcat 默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈。
(1)JVM内存优化
编辑TOMCAT_HOME/bin/catalina.sh:
JAVA_OPTS="-server -Xms1024m -Xmx2048m -Xss512k -Djava.awt.headless=true"
-server:启用 JDK 的 server 版本;
-Xms:Java初始化时堆的最小内存;
-Xmx:Java可使用堆的最大内存;
-Xss:每个线程的堆栈大小,一般不超过1M,否则容易出现out of memory。
(2)线程优化
默认配置下,Tomcat 会为每个连接器创建一个绑定的线程池,使用线程来处理接收的每个请求。
编辑 conf/server.xml 配置文件中 <Connector ... />项:
maxThreads:Tomcat 可创建的最大的线程数,默认值是 200。
minSpareThreads:Tomcat 初始化的线程数,表示即使没有请求也开启的线程数,默认值是 10。
maxSpareThreads:最大空闲线程数。
connectionTimeout:网络连接超时,单位:毫秒。设置为 0 表示永不超时,通常可设置为 30000 毫秒。
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为 10。
maxProcessors:最大连接线程数,并发处理的最大请求数,默认值为 75。
acceptCount:允许的最大连接数 ,默认值为 100。
enableLookups:是否反查域名,为了提高处理能力,应设置为 false。
compression="on":打开压缩功能。
compressionMinSize:启用压缩的输出内容大小。
compressableMimeType:压缩类型。