Tomcat部署及优化

tomcat:开源的web应用服务器,基于Java代码开发。tomcat就是处理动态请求和基于Java代码的页面开发,可以在html中写入Java代码,tomcat可以解析html页面中的Java。执行动态请求,动态页面。

但是tomcat会有机制问题:不对tomcat进行优化,会出现假死,停机。

小集群,小服务,小应用适用于tomcat,大并发的场景不适用

tomcat的优点:1、免费  2、开源可以进行二次封装  3、可配置性强,可以根据需要进行自定义配置,包括端口号,虚拟主机等  4、tomcat自带安全机制,可以配置用户认证,授权,加密传输

5、部署应用非常快捷,tomcat会自动部署,自动运行

tomcat的核心组件

有三个:

1、web容器,完成web服务器的功能,web应用

工作方式:  web→http或https→访问页面→指向到文件index.jsp

web容器中封装了一组文件,在这一组文件中进行集中化管理。就是web动态页面

2、servlet容器:名字叫catalina,用于处理servlet代码,就是处理web请求(http),以及生成动态内容的Java类,处理http请求。

3、jsp容器:jsp动态页面,翻译成servlet代码,用标准格式展示jsp的静态页面

Tomcat部署及优化_第1张图片

 总结:web容器:1、接受、响应请求  2 、 展示动态页面
            JSP容器:翻译java--->servlet
            Serverlet容器:借助于catalina来执行servelet代码(动态任务执行的标准格式)

补充:servlet功能:1、处理http请求  2、生成动态内容,是为了和用户发起的,jsp当中的数据库进行交互   3、会话管理:跟踪用户在不同请求之间的状态,通过管理可以在用户访问不同页面时保持用户的状态    4、与数据库进行交互,servlet可以连接到数据库,执行查询和更新操作

以上就是servlet能够生成动态内容的原因

jsp:java server pages  动态页面的开发技术,使用jsp标签 index.jsp

在html页面中插入java代码

java容器→html页面中的java代码翻译→执行→展示结果

tomcat 功能组件结构——connector和container

Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。 
其中连接器和容器相辅相成,一起构成了基本的 web 服务 Service。每个 Tomcat 服务器可以管理多个 Service。

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

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

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

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

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

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

这四个组件的工作方式也是从上到下的,这四个容器之间属于父子关系。

容器 由一个引擎可以管理多个虚拟主机。每个虚拟主机可以管理多个 Web 应用。
每个 Web 应用会有多个 Servlet 封装器。

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

tomcat请求的过程

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

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

3、请求在 Engine、Host、Context 和 Wrapper 这四个容器之间层层调用,
最后在 Servlet 中执行对应的业务逻辑、数据存储等。

4、执行完之后的请求响应在 Context、Host、Engine 容器之间层层返回,最后返回给 Connector,
并通过 Connector 返回给客户端。
 

总结:

1、输入网址请求发送,发送到8080端口,被在那里监听的connector获得

2、connector把请求转发到container处理→Engine(管理虚拟主机,你要访问哪一台虚拟主机)

→host(主机站点,包含要请求页面的位置,weapps)→context,就是index.jsp里面的内容

→wrapper(servlet来解析,响应,处理这些请求)→jsp翻译→页面展示

实验:安装JDK环境变量,安装tomcat以及优化

把两个包拖如/opt目录下

Tomcat部署及优化_第2张图片

 因为是rpm包,所以是用rpm -ivh安装

设置JDK环境变量

 

 

 刷新

 检查

写一段java代码(了解)

 Tomcat部署及优化_第3张图片

 

 

下面开始安装apache

 解压

 做个优化,放到/usr/local/tomcat里面

 后台启动tomcat

 前台启动tomcat

 因为tomcat会伪启动,所以要看一下他的端口有没有起来

Tomcat部署及优化_第4张图片

 再浏览器通过192.168.88.10:8080检查一下

下面开始做优化,打开manager页面,manager页面是tomcat的一个重要监视页面

Tomcat部署及优化_第5张图片

 没做优化前manager页面是不能正常访问的

第一步,允许所有主机访问

 

 

 

 

 第二步:在conf,tomcat-users.xml中,添加账户密码

Tomcat部署及优化_第6张图片

 Tomcat部署及优化_第7张图片

 

修改完了需要重启

Tomcat部署及优化_第8张图片

 

刷新一下网页并输入账号密码(默认都是tomcat,也可以自定义),进入tomcat的管理页面

Tomcat部署及优化_第9张图片

 要看这个

 

v

 在这里面主要看JVM的内存够不够,下面优化JVM内存池

 如果不够需要进入catalina.sh里面进行优化

 插入一行代码

JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:PermSize=1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGC"

命令解析:

-server:第一个参数,指定内存池,一定放在第一个。
-Xms2048m:初始java堆的大小。分配JVM的最小内存,看cpu:cpu性能高,这个值,可以设高一点
-Xmx2048m:JAVA堆最大能多大,jvm的最大内存。和硬件内存挂钩。根据官方文档,起始值和最大值保持一致。XMS和XMX设为一样的,内存可以设为物理内存的一般。
-Xmn768m :新生代的内存大小。官方推荐为了整个堆大小的3/8.
-XX:ParallelGCThreads=2: 配置并行收集器的线程数,同时可以有多少个线程进行垃圾回收。
-XX:PermSize:设置持久代内存的大小,默认是物理内存的1/4。
-XX:MaxPermSize=1024m :最大的非堆内存的大小,默认也是物理内存的1/4;
-XX:PermSize=1024m -XX:MaxPermSize=1024m
非堆内存是不会被垃圾回收机制处理的,-XX:PermSize持久代内存与最大非堆内存不能超出操作系统可用的内存。设置成一样大,可以减轻伸缩堆大小的压力。
-Djava.awt.headless=true:避免在linux环境下,web不能正常打开以正常显示图片。
-XX:+DisableExplicitGC" :避免jvm空间大起大落,影响系统的响应时间。响应速度会很慢。

 

 修改完配置文件需要重启

 刷新一下网页,发现内存池扩大了

tomcat主要优化就是优化内存池

tomcat虚拟主机配置,一台服务器上在一个tomcat中会部署多个虚拟机服务器,减少系统的资源消耗,就是创建两个网页,网页的配置文件都在webapps里面

Tomcat部署及优化_第10张图片

 创建两个web服务的目录

 

 

 

 

Tomcat部署及优化_第11张图片

 修改server.xml的配置文件

 修改前先做个备份

 打开配置文件

 在最底行删除他自带的host,再插入一段代码

Tomcat部署及优化_第12张图片

 

   



Tomcat部署及优化_第13张图片

 

 

 重启服务

 

 做host映射

 在虚拟机中访问

 

你可能感兴趣的:(tomcat,java)