Tomcat 部署与优化

目录

tomcat 简介

tomcat 构件

1. Web 容器

2. Servlet 容器

3.Jsp容器

tomcat 核心组件

Connector

Container

Service

子容器

总结

tomcat 部署

tomcat请求过程

tomcat部署

tomcat 优化

tomcat配置文件参数优化

JVM优化


tomcat 简介

提到Tomcat 就想到 java,没错,Tomcat 确实是 java 语言开发的,它是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下 被普遍使用,是开发和调试 JSP 程序的首选,通常是作为一个 Servlet 和 JSP 容器,单独运行在后端。

tomcat 构件

tomcat 有三个构件,分别是web 容器、servlet 容器、jsp 容器 

1. Web 容器

作为 Web 服务器的核心部分,Web 容器负责接收和响应 HTTP 请求,处理静态内容如 HTML 页面,并将动态请求传递给适当的 Servlet 或 JSP 容器进行处理。

2. Servlet 容器

由catalina组件处理,Servlet 容器接收 Web 容器传递过来的请求,并调用相应的 Servlet 代码进行处理,Servlet 容器管理 Servlet 的生命周期,包括创建、执行和销毁 Servlet 实例。

3.Jsp容器

JSP 容器接收 Web 容器传递的 JSP 请求,将 JSP 页面转换为 Java Servlet 代码,然后通过 Servlet 容器执行这些代码,生成动态网页内容。

tomcat 核心组件

tomcat 又有三个核心组件,分别是connetor、container、service,它们一起构成了基本的 web 服务 Service,每个 Tomcat 服务器可以管理多个 Service。

1.Connector

负责对外接收和响应请求。它是Tomcat与外界的交通枢纽,监听端口接收外界请求,并将请求处理后传递给容器做业务处理,最后将容器处理后的结果响应给外界。

2.Container

负责对内处理业务逻辑。其内部由 Engine、Host、Context和Wrapper 四个容器组成,用于管理和调用 Servlet 相关逻辑。

3.Service

对外提供的 Web 服务。主要包含 Connector 和 Container 两个核心组件,以及其他功能组件。Tomcat 可以管理多个 Service,且各 Service 之间相互独立。,每个 Service 会包含一个 Container 容器。

子容器

在 Container 内部包含了 4 个子容器

4个子容器分别是:Engine、Host、Context、Wrapper

Engine:引擎,用来管理多个虚拟主机,一个 Service 最多只能有一个 Engine

Host:代表一个虚拟主机,也可以叫站点,通过配置 Host 就可以添加站点

Context:代表一个 Web 应用,包含多个 Servlet 封装器

Wrapper:封装器,容器的最底层。每一 Wrapper 封装着一个 Servlet,负责对象实例的创建、执行和销毁功能。

总结

说了这么一大堆,其实都是有顺序的
web容器包含servlet容器和jsp容器,service 包含 connector 和container,container 包含engine,engine 包含 host ,host 包含 context ,context 包含 wrapper ,而wrapper 管理具体的servlet 实例。

tomcat 部署

tomcat请求过程

在进行 tomcat 部署之前,我们需要先了解tomcat的请求过程

1、用户在浏览器中输入网址,请求被发送到本机端口 8080,被在那里监听的 Connector 获得;

2、Connector 把该请求交给它所在的 Service 的 Engine(Container)来处理,并等待 Engine 的回应,Engine 将请求交给 Host 虚拟主机;

3、Host 虚拟主机收到请求后,将请求交给context

4、context 收到请求后,在它的mapping table 中寻找对应的servlet,找到对应的JspServlet类

5、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法

6、Context把执行完了之后的HttpServletResponse对象返回给Host

7、Host把HttpServletResponse对象返回给Engine

8、Engine把HttpServletResponse对象返回给Connector

9、Connector把HttpServletResponse对象返回给用户

2-9步看起来多,其实就是请求在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用,最后在 Servlet 中执行对应的业务逻辑、数据存储等,然后再逐层返回。

tomcat部署

在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。

1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下

jdk-8u201-linux-x64.rpm

apache-tomcat-9.0.16.tar.gz

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

2.安装JDK

cd /opt rpm -qpl jdk-8u201-linux-x64.rpm

rpm -ivh jdk-8u201-linux-x64.rpm

java -version

3.设置JDK环境变量

vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile.d/java.sh

java -version

/etc/profile

接下来开始安装 tomcat 

去官网找到下载链接

cd /opt

wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.16/bin/apache-tomcat-9.0.16.tar.gz

tar zxvf apache-tomcat-9.0.16.tar.gz

mv apache-tomcat-9.0.16 /usr/local/tomcat

前台启动

/usr/local/tomcat/bin/catalina.sh run

直接访问本机ip:8080

出现如下页面说明tomcat部署成功

tomcat 优化

tomcat默认安装下的配置并不适合我们真实的生产环境,它可能会频繁出现假死现象需要重启,我们可以通过修改配置文件等来优化tomcat,让它最高效率稳定的运行。优化主要包括三方面,分别为操作系统优化(内核参数优化),tomcat配置文件参数优化,Java虚拟机(JVM)调优。

tomcat配置文件参数优化

vim /usr/local/tomcat/conf/server.xml

69行左右有<Connector port="8080" protocol="HTTP/11.1"...........

从71行 /> 前面开始插入配置参数

常用的配置参数有

redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口

maxThreads:可创建的最大的线程数,即支持的最大并发连接数,默认值是 200

minSpareThreads:最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是 10

maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制)。一般不需要指定

URIEncoding:指定 Tomcat 容器的 URL 编码格式,语言编码格式这块倒不如其它 Web服务器软件配置方便,需要分别指定

connnectionTimeout:网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置有隐患的。通常默认 20000 毫秒就可以

enableLookups:是否反查域名,以返回远程主机的主机名,取值为:true 或 false,如果设置为 false,则直接返回 IP 地址,为了提高处理能力,应设置为 false

disableUploadTimeout:上传时是否使用超时机制。应设置为 true

connectionUploadTimeout:上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,以使Servlet有较长的时间来完成它的执行,需要与上一个参数一起配合使用才会生效

acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为 100 个

compression:是否对响应的数据进行GZIP压缩,off:表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为 off,压缩数据后可以有效的减少页面的大小,一般可以减小 1/3 左右,节省带宽

compressionMinSize:表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是 2048

compressableMimeType:压缩类型,指定对哪些类型的文件进行数据压缩

noCompressionUserAgents="gozilla, traviata":对于以下的浏览器,不启用压缩

JVM优化

/bin/catalina.sh

-server:jvm的server工作模式,对应的有client工作模式。使用“java -version”可以查看当前工作 模式

-Xms1024m:初始Heap大小,使用的最小内存

-Xmx1024m:Java heap最大值,使用的最大内存。经验: 设置Xms大小等于Xmx大小

-XX:NewSize=512m:表示新生代初始内存的大小,应该小于 -Xms的值

-XX:MaxNewSize=1024M:表示新生代可被分配的内存的最大上限,应该小于 -Xmx的值

-XX:PermSize=1024m:设定内存的永久保存区域,内存的永久保存区域,VM 存放Class 和 Meta 信息,JVM在运行期间不会清除该区域

-XX:MaxPermSize=1024m:设定最大内存的永久保存区域。经验: 设置PermSize大小等于 MaxPermSize大小

-XX:+DisableExplicitGC:自动将System.gc() 调用转换成一个空操作,即应用中调用System.gc() 会变成一个空操作,避免程序员在代码里进行System.gc()这种危险操作。System.gc() 除非是到了万不得也的情况下使用,都应该交给 JVM。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值