tomcat

tomcat:是一个开源的web应用服务器。区别于nginx,nginx主要处理静态页面,那么动态请求(连接数据库、动态页面),并不是nginx处理的长项,动态的请求会给tomcat进行处理

tomcat

1、处理动态页面(HTTP的请求)

2、处理后端请求(调用数据库服务器)

3、易部署(会自动识别配置文件。自动部署运行)

5、轻量级的服务软件,处理中小架构的网站可以满足,大型的交互需求就不是tomcat的长项了(python node.js 容器化来处理。在容器化部署到项架构中是不使用tomcat的,都是用jar包直接运行,包括k8s)

tomcat的核心组件

1、web容器:完成web功能,处理的请求也是nginx转发过来的HTTP/https请求,处理的是动态页面(基于Java代码编译的页面),处理后端的请求(转发到数据库的请求)

2、servlet(catalina):是整个tomcat处理的底层逻辑。处理web请求的动态页面,也处理后端请求(数据库)

3、jsp:jsp会把动态页面翻译成servlet的代码,用编译后的规则显示代码的静态页面

静态页面:html

动态页面:php index.php

jsp index.jsp ---- Java格式写成的代码,靠jsp翻译,servlet执行编译后的代码,最后展示结果

容器

容器通常指的是虚拟化技术,允许在当前的操作系统当中虚拟化的运行多个独立的环境。独立运行的环境就是我们说的容器。彼此之间相互隔离,拥有自己的一套系统资源。 宿主。容器寄生在宿主上,实际使用的是宿主的资源

servlet容器

概念:用于开发web应用程序的关键组件

处理HTTP请求,生成动态内容,以及与客户端之间的交互、前端交互、后端数据库服务器交互、和redis缓存交互

类:Java中,调用各种方法。开发人员自定义

处理http请求

生成动态页面内容

会话管理:处理用户会话,跟踪用户在不同请求之间的状态。servlet可以在用户访问不同页面时,保持用户的状态信息,购物车同步,用户同步登录等等

JSP

概念:java server pages 动态网页的开发技术,使用jsp的标签在HTML的网页中插入JAVA代码。

<%开头

%>结尾

实现java web应用程序的访问界面。用户界面。或者访问数据库,生成页面内容。

tomcat的核心功能

功能部分由两个块组成:

1、 connector 接收和响应外部请求的连接器

2、 container 负责处理请求的

四个工作组件

(在container里)

engine

引擎。管理多个虚拟主机,一个tomcat里面只能有一个engine

host

代表站点,也就是虚拟主机。一个engine可以有多个host

context

一个context执行一个web应用

wrapper

最底层,处理和编译代码,与运行结果

JDK:开发工具包,开发java的应用程序,jdk包括:编译器,调试器,等等以及java的类库

开发者用来创建、编译 运行java程序的重要组件

JVM:java的虚拟机,负责编译后的Java字节码编成本地的机器码。运行Java代码

jvm:内存管理,垃圾回收机制。线程管理

bin: 存放启动或者关闭tomcat的脚本文件 startup.sh shoutdow.sh

conf:存放的是配置文件 server.xml就是tomcat的主配置文件

webapps:tomcat默认的web应用的部署目录

work:tomcat的工作目录,存放]SP编译之后产生的class文件。清缓存会用到

tomcat配置虚拟主机

www.123.com

www.benet.com

Host name="www.123.com指定站点 (虚拟主机的域名appBase="webapps"站点的工作目录在webapps 存放web应用的目录

unpackWARs="true" 启动网络应用程序,对战争包进行展开

autoDeploy="true" 防止在默认应用目录的程序文件,自动进行部署.

xmIValidatiom="false" #是否验证XML文件执行的有效性标志

xmINamespaceAware="false" #是否启动xml命令空间

docBase="/usr/local/tomcat/webapps/123": web应用程序的具体那署位置,也就是context所的host中的具体的工作目录

path:为空,默认就是webapps

reloadable="true":允许重新加载context相关的web应用程序的类

1、请求到连接器;连接的端口是8080,连接器接受请求

2、www.123.com 引擎管理虚拟主机---host---www.123.com---context---访问ww.123.om该主机的工作目录---webapps/123------index.jsp-----wrapper---servlet来解析index.jsp内容

3、响应的内容返回到客户端

tomcat的优化

默认配置并不适合生产环境,频繁出现假死。

需要通过不断地压力测试进行优化,提高稳定。

1、配置文件优化

【常用的配置优化】

maxThreads="200"

#tomcat使用线程来处理接受的每个请求,可以创建的最大线程数。支持的最大并发连接数 200

minSpareThreads=200

#最小空闲线程数,tomcat启动时的初始化的线程数,表示没人请求,也要打开这些空的线程等待请求 10

maxSpareThreads

#最大备用线程数。创建线程的超过这个值,tomcat会关闭不再需要的线程,默认是-1 (不做限制)

connnectionTimeout=20000

网络连接超时,一般是20000(毫秒),不修改

enableLookups = " false "

#是否方向解析域名,不解析,提高处理效率

disableUploadTimeout = " true "

#上传文件时,是否启用超时限制

connectionUploadTimeout = " 15000 "

上传比下载要耗时,根据需求自定义。华为是15000毫秒

accpetCount = " 100 "

#所有的可以使用的线程都被占用,可以传入的队列长度的最大值

compression = " on "

是否对响应的数据进行gzip压缩(一般是on off是关闭 force是所有的情况下都进行压缩)。on 压缩之后的页面大小可以减少1/3

noCompressionUserAgents = "gozilla chrom"

#对指定访问的浏览器,不进行压缩

2、jvm优化

AVA OPTS="$IAVA OPTS -server -Xms2048m -Xmx2048m -Xmn768m -xx:ParallelGCThreads=2 -Xx:Permsize=1024mXX:MaxPermSize=1024m-Diava.awt.headless=true-XX:+DisableExplicitGC"

-server:一定要作为第一个参数

-Xms2048m:java初始化堆的大小,是分配jvm的最大内存。cpu性能高,可以值再设高一点

-Xmx2048m:最大java堆大小,是分配ivm的最大内存,取决于物理内存有多大。建议-xms和xmx的值,设置成一样,推荐是你物理的内存的一半。(目的:Java的垃圾回收极致清理完堆区后,不需要重新分隔计算堆区的大小)

-Xmn768m:新生代内存的大小。官方推荐整个堆大小的3/8【 新生代 :java中每新建一个新的对象,占用的内存就是新生代。 中生代 :对象创建完毕之后,占用的内存就是中生代。 老年代:java垃圾回收机制进行资源回收之后,中生代中剩余的部分,就是老年代 】

-XX:ParallelGCThreads=2 :配置并行收集器的线程数,有多少个线程一起进行垃圾回收,官方推荐: 与cpu数量相同

-XX:PermSize=1024m :设置非堆内存的初始值,持久代内存的大小,一般设置为物理内存的1/4

-XX:MaxPermSize=1024m:最大非堆内存的大小,持久代内存的最大值,一般设置为物理内存的1/4

Djava.awt.headless=true :避免在linux环境下,web不能展示图片

-XX:+DisableExplicitGC :禁止调用system.gc()方法,误调用了gc方法,会导致整个jvm的响应速度降低。

堆:存储新创建的对象

非堆: 存储编译之后的代码或者是压缩后的类或者是类的元数据

ajp-nio-8009

连接器当中的一种类型

ajp:协议名称就叫ajp

nio:异步非阻塞通信

8009:AJP协议的监听端口

AJP:tomcat服务器和前端web服务器(Apache nginx)进行连接。提供负载均衡和高效的请求转发,提高并发的处理能力

http-nio-8080

用于处理http协议的网络请求

端口: 8080

3、操作系统优化(内核优化)

相关推荐
codeMaster__hyd1 天前
CentOS7系统下部署tomcat,浏览器访问localhost:8080/
服务器·阿里云·tomcat
Monly211 天前
Java(若依):修改Tomcat的版本
java·开发语言·tomcat
Ttang231 天前
Tomcat原理(6)——tomcat完整实现
java·tomcat
梁萌2 天前
Docker快速安装Tomcat
docker·容器·tomcat·镜像
全栈老实人_3 天前
时间管理系统|Java|SSM|JSP|
java·开发语言·tomcat·maven
2401_850410833 天前
LVS简介
运维·nginx·tomcat·lvs
程序员大金3 天前
基于SSM+Vue的个性化旅游推荐系统
前端·vue.js·mysql·java-ee·tomcat·mybatis·旅游
第八学期4 天前
Tomcat快速入门(Java环境介绍+Tomcat快速安装+Tomcat配置文件+Tomcat配置虚拟主机+Tomcat管理界面)
java·运维·开发语言·tomcat
Ttang234 天前
Tomcat原理(4)——尝试手动Servlet的实现
java·开发语言·servlet·java-ee·tomcat·intellij-idea
小佟4 天前
Tomcat10安装报错Unknown module: java.rmi specified to --add-opens
tomcat