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、操作系统优化(内核优化)

相关推荐
尢词18 小时前
SpringMVC
java·spring·java-ee·tomcat·maven
清风百草18 小时前
【04】【Maven项目热部署】将Maven项目热部署到远程tomcat服务器上
tomcat·maven项目热部署
蒋桐城1 天前
Tomcat 启动卡住,日志显示 At least one JAR was scanned for TLDs yet contained no TLDs.
java·tomcat
qiaosaifei1 天前
SpringBoot项目中替换指定版本的tomcat
spring boot·后端·tomcat
雷神乐乐2 天前
IDEA构建JavaWeb项目,并通过Tomcat成功运行
服务器·tomcat·javaweb
陈大爷(有低保)2 天前
数据库连接池JNDI
数据库·mysql·tomcat
笔墨登场说说2 天前
JDK 里面的线程池和Tomcat线程池的区别
java·servlet·tomcat
爱分享的淘金达人2 天前
25国考照片处理器使用流程图解❗
java·考研·spring·eclipse·tomcat
爱分享的淘金达人2 天前
2025年山东省考报名流程图解
java·考研·spring·eclipse·tomcat·流程图
弓弧名家_玄真君3 天前
mac 安装tomcat
java·macos·tomcat