第六章Tomcat部署以及优化

Tomcat:

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

 

开放源代码web应用服务器。(基于Java代码开发的),主要是处理动态请求和基于java代码进行页面开发。可以在html当中写入Java代码,Tomcat可以解析html页面当中的Java,执行动态请求,动态页面。

Tomcat的问题:

1,机制有问题,不对Tomcat进行优化,会出现:假死或者停机。小集群,小服务,小应用适用于Tomcat,大并发的场景不合适。

Tomcat优点:

1,免费。

2,开源,可以二次封装

3,可配置性强

4,安全性,Tomcat自带安全机制,可以配置用户认证,授权,加密传输。

5,部署应用非常快捷,Tomcat会自动部署,自动运行。

核心组件:

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

 

1,web容器:主要是完成web服务器的功能,web应用。

web——>http或者https——>访问页面——>文件 index.jsp

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

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

)1,处理http请求

)2,生成动态内容,为了和数据库交互——>用户发送的,jsp当中

)3,会话管理,跟用户在不同请求之间的状态,通过管理,可以在用户访问不同页面时保持用户的状态

)4,与数据库交互,servlet可以连接到数据库,执行查询和更新操作,这就是servlet能够生成动态内容的原因

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

)1,jsp:java server pages 动态页面的开发技术。使用jsp标签index.jsp 在html页面种插入Java代码。

)2,jsp容器——>html页面当中的Java代码翻译——>执行——>展示结果。

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

 

功能组件:

1,connector:负责对外接受和响应请求,是Tomcat与外界的交通枢纽。监听端口,也可以接受外界请求,交给container处理。

2,container负责对内处理业务逻辑

)1,Engine:引擎,管理虚拟机(service,一个service里面可以包含多个虚拟主机),可以管理多个,但是每个service里面只能由一个Engine

)2,Host:代表一个虚拟机,也可以叫站点

)3,Context:web应用。包含多个servlet

)4,Wrapper:封装器,最底层,每一个wrapper里面都封装一个servlet,负责对象实例的创建,执行,销毁

Tomcat处理请求的过程

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

 

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

2,connector会把请求转发到container处理——>engine(虚拟主机,你要访问那个虚拟主机)——>host(主机站点包含请求页面的位置。webapps)——>从contex,就是index.jsp里面的内容。——>wrapper(servlet,响应解析处理请求)——>jsp翻译官——>页面展示

Tomcat文件中:

1,bin:存放的启动和关闭tomcat脚本文件

2,conf:著配置文件 server.xml 主配置文件

3,contex.html host :默认配置信息

4,tomcat-user.xml:认证用户密码的配置文件

5,web.xml:配置servlet servlet的规范标准

6,lib:tomcat运行库的jar包,一般不动,除非第三方——redis,数据库

7,logs:日志文件

8,webapps:web应用部署的默认文件

9,work:tomcat的工作目录

JVM:就是Java的虚拟机,是Java应用程序在计算机上运行的核心组件,Java负载将编译后的Java字节码(.class文件),解释或者编译成本地的机器码,计算机能够执行它。Java还是提供好了内存管理,垃圾回收,线程管理。确保Java程序在不同平台可以有一致性的功能

JVM优化:(年限长的会问)

1,catalina.sh:就是servlet代码,已经容器的配置

2,PS Eden Space:堆内存:储存新创建的对象

3,PS Old Gen:堆内存,存储长时间存活的对象

4,PS Survivor Space:堆内存,存在创建之后,生命周期较短的对象

5,Code-Cache:非堆内存,存储已经编译的代码

6,Compressed Class Space :非堆内存,储存已经压缩的类

7,Metaspace:非堆内存,存储类的元数据

 

面试题:(代码都要记住)

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部署以及优化_第5张图片

 

Tomcat 虚拟主机配置:

一台服务器上,在一个tomcat中会部署多个虚拟机服务器。减少系统的资源消耗

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

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

 

Tomcat优化:

1,第一次启动tomcat会发现启动速度很慢

jdk参数:

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

 

2,server.xml针对主配置文件的优化

)1,redirectPort:如果某连接器支持的协议是http,当接受客户端发来的请求是https,就会启动此端口,8443

3,maxthreads:tomcat使用线程来处理请求的,可以创建的最大线程数,也就是并发连接数。默认200

4,minsparethreads:最小空闲线程数,开启tomcat是会有多少线程,默认是0
5,maxSparethreads:最大的备用线程,一旦创建的线程数超过这个值,rtomcat会关闭不再需要的端口进进程,默认是-1,也就是不限制。一般不指定

6,URIEncoding:URL的格式编码,默认utf、-8.需要分别指定,所以一般不动

7,connection Timeout:网络连接超时,单位:毫秒。为0,永不超时,一般为20000毫秒。

8,enableookups:是否反向解析域名,为了能够获取远程主机的主机名。一般设置为false,直接返回ip地址。提高了处理能力。

9,disableUploadTimeout:上传超时时间,设置为true

10,connectionUploadTimeout:因人而异,一般1分钟或者30秒

11,acceptCount:所有可以使用的线程如果都被占用了,可以传入链接请求的最大队列长度。(默认100个,超出这个范围的所有请求都会被直接丢弃)

12,compression:是否开启页面和响应数据的压缩。off关 on开 force(所有的情况下都进行压缩。)

Tomcat多实例

多实例:在一台服务器上有多个tomcat服务。

HOME:tomcat主目录的路径,包含所有tomcat的文件

工具:

telnet:第三方软件,用作测试端口通信是否正常。

语法: telnet 20.0.0.40 80

Nginx+Tomcat实现动静分离:

静:静态页面

动:动态页面

分别可以对静态页面和动态页面发起不同的请求,会有不同的响应结果。

nginx 反向代理——>负载均衡——>tomcat是后端服务器——>web静态nginx——>静态请求——>nginx——>动态页面——>tomcat

我们需要多台tomcat:因为tomcat并发能力弱,只有nginx的六分之一,所以要有负载均衡进行合理的分配。

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

 

你可能感兴趣的:(tomcat)