tomcat 服务器

tomcat 服务器

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

nginx-----转发动态请求------tomcat

tomcat 1,处理动态页面(http的请求)

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

            3,易部署:tomcat会自动识别配置文件。自动部署运行

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

tomcat的核心组件:

1,web容器:完成web功能 处理请求也是nginx转发http(s)请求,处理动态页面(java代理编译的页面)处理后端的请求(转发数据库的请求。)

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

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

静态页面:html

动态页面:php inex.php

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

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

servlet容器:用于开发web应用程序的关键组件,处理http请求,生成动态内容于客户端之间的交互,前端交互,后端数据库服务交互。和redis缓存交互。

类:java当中。调用各种方法,是由开发人员自定义的。

处理http请求

生成动态页面的内容

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

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

<%开头

%>结尾

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

tomcat的核心功能:

功能部分由两个块组成:

接受和响应外部请求的连接器 connector

负责处理请求的 container

包含:

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

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

3 context:一个context 执行一个web应用。

4 wrapper:最底层,处理和编译代码,运行结果。

实验

java组件:

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

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

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

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

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64

设置java_home的环境变量,指向jdk,也就是java的工作目录

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

java类的搜索路径

export PATH=$JAVA_HOME/bin:$PATH

把java的可执行命令添加到系统的环境变量当中。

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

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

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

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

tomcat配置虚拟主机:

1,配置工作目录

在公司当中会运行多个项目,一台tomcat太多会浪费资源,所以会在tomcat中配置多个主机,通过不同的域名访问不同的内容。

Host name="www.kgc com 指定站点(虚拟主机的域名)

appBase="webapps" 站点的工作目录在webapps存放web应用的目录

unpackWARs="rue" 启动webapps,对war包进行展开

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

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

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

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

path:为空,默认就是webapps

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

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

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

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

和nginx的虚拟主机是一样的

开启之后要检查端口。

tomcat的优化:

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

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

1,配置文件优化(背 面试题)

server.xml (0配置文件)

maxThreads=“200”

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

minSpareThreads=“200”

最小空闲线程数,tomcat启动是的初始的线程数,表示没人请求,也要打开这些空的线程等待请求 默认是10 一般是200,或者最大的一半

maxSpareThreads

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

connection Timeout 网络连接超时。设置为20000毫秒

enableLookups=“false”

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

disableUploadTimeout="true"

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

connectionUploadTimeout=“15000”

上传比下载要耗时,根据需求自定义

accpetCount="100"

所有的可以使用的线程被占用,可以传入的队列长度的最大值。默认100

compression="no" off force: 所有的情况下都进行压缩

是否对响应的数据进行gzip压缩一般都是on 压缩之后的页面大小可以减少1/3.提高响应速度和带宽

noCompressionUserAgents="gozilla chrom"

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

2,jvm优化

JAVA_ OPTS="$JAVA. OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:PermSize=1024m -

XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGC"

cygwin=false

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

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

-Xms2048m:java初始化堆的大小,是分配jvm的最大内存,取决于物理内存有多大。建议-xms和xmx的值设置成一样,推荐设置成内存的一半。

目的:java的垃圾回收机制清理完堆区后,不需要重新分隔计算堆区的大小。

-Xmn768:新生代内存的大小。官方推荐整个堆区的大小3/8。

新生代:Java中每新建一个新的对象,占用的内存就是新生代

中生代:对象创建完毕之后,占用的内存就是中生代

老年代:java垃圾回收机制进行资源回收之后,中生代中剩余的部分,就是老年代。

-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服务器(APAACCHE nginx)进行连接

提供负载均衡和高效的请求转发,提高并发处理能力

http-nio-8080

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

端口8080

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

Linux内核优化中主要针对两个配置文件 /etc/security/limits.conf 和/etc/sysctl.conf

通常是利用调用内核参数的程序sysctl -a 查询出最优内核参数,然后写入 /etc/sysctl.conf 文件内的。

sysctl -a |grep fs.file-max #查询出的文件句柄数量上限。

文件句柄(File Handle)是操作系统用于跟踪和管理打开的文件或资源的数据结构。

在操作系统中,每个打开的文件、网络连接、设备等都会被分配一个唯一的句柄,

操作系统通过这个句柄来标识和访问这些资源。

句柄数是指操作系统能够同时管理的句柄的数量。在一个计算机系统中,

许多应用程序和进程需要打开和使用文件、网络连接等资源。每个资源都需要一个句柄来进行操作。

如果系统的句柄数限制太低,就可能导致应用程序无法打开足够的文件、网络连接或其他资源,

从而影响系统的性能和可用性。

因此,调整句柄数的设置是确保系统能够处理并发连接和资源请求的重要一环。

在高负载的服务器环境中,适当地增加句柄数的限制可以提高系统的并发能力和性能。

但是过于激进地增加句柄数可能会消耗过多的系统资源,因此需要根据实际需求和硬件配置进行调整。

永久配置:

注意:设置保存后,需要重新ssh连接才会看到配置更改的变化

*soft nproc 65535: 最大进程数软限制为 65535,即可以使用 ulimit -u 命令查看和修改的值。

*hard nproc 65535: 最大进程数硬限制为 65535,即最大可分配的进程数。

*soft nofile 65535:最大打开文件数软限制为 65535,即可以使用 ulimit -n 命令查看和修改的值。

*hard nofile 65535:最大打开文件数硬限制为 65535,即最大可分配的文件数。

这里使用的通配符 * 表示对所有用户生效。

其他调试内核参数的查看: sysctl -a

kernel.sysrq = 0: 禁用了内核的SysRq功能,SysRq允许在系统崩溃或出现问题时执行一些调试操作。

kernel.core_uses_pid = 1: 设置核心转储文件名中包含进程ID,有助于标识是哪个进程导致了核心转储。

kernel.msgmnb 和 kernel.msgmax: 增加IPC消息队列的默认和最大大小,用于进程间通信。

kernel.shmmax 和 kernel.shmall: 调整共享内存的最大大小和分配页面数。

net.ipv4.ip_forward = 0: 禁用IP数据包的转发功能,通常用于不充当路由器的系统。

net.ipv4.conf.default.rp_filter 和 net.ipv4.conf.all.rp_filter: 控制反向路径过滤,提高网络安全性。

net.ipv4.icmp_echo_ignore_all: 允许或禁止系统响应ping请求。

...

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCL 坡度滤波算法地面分割(C++详细过程版)

目录 一、算法原理1、实现流程2、参考文献二、代码实现三、结果展示一、算法原理 1、实现流程 1、格网示意图 2、计算格网行列数 公式中的特殊符号为向上取整,

Cesium Vue(三)— 相机配置

1. 坐标系转换 1.1 cesium使用到的坐标系 屏幕坐标系&#xff0c;二维的笛卡尔坐标系&#xff0c;API > Cartesian2地理空间坐标系&#xff0c;WGS-84坐标系&#xff0c; API > Cartographic(经度&#xff0c;维度&#xff0c;高度)三维笛卡尔空间直角坐标系&#xff0…

GPT4 Advanced data analysis Code Interpreter 做行业数据分析、可视化处理图像、视频、音频等

1. 跨境电商如何用ChatGPT选品 ChatGPT Jungle scout 案例&#xff1a;跨境电商如何用ChatGFT选品 ChatGPTJungle scout 素材和资料来自&#xff1a; Jungle ScoutEM, Michael Soltis 和 文韬武韬AIGC 1.1 从Jungle scout上下载数据 Date Range > Last 90 days Downlo…

python+大数据校园卡数据分析 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度学习车牌识别系统实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;3分 该项目较为新颖&am…

Stable Diffusion绘画,卡通,教室

1 girl, parted lips, blush, makeup, light smile, school uniform, classroom, light rays, glow, thighs, collarbone, narrow waist, (masterpiece), wallpaper 1个女孩&#xff0c;双唇&#xff0c;腮红&#xff0c;化妆&#xff0c;浅笑&#xff0c;校服&#xff0c;教室…

基于SSM框架的安全教育平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

【Eclipse】设置自动提示

前言&#xff1a; eclipse默认有个快捷键&#xff1a;alt /就可以弹出自动提示&#xff0c;但是这样也太麻烦啦&#xff01;每次都需要手动按这个快捷键&#xff0c;下面给大家介绍的是&#xff1a;如何设置敲的过程中就会出现自动提示的教程&#xff01; 先按路线找到需要的页…

uniapp使用uQRCode绘制二维码,下载到本地,调起微信扫一扫二维码核销

1.效果 2.在utils文件夹下创建uqrcode.js // uqrcode.js //--------------------------------------------------------------------- // github https://github.com/Sansnn/uQRCode //---------------------------------------------------------------------let uQRCode {…

设计模式(1)-设计模式前置基础知识

1&#xff0c;设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中&#xff0c;而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫亚历山大&#xff08;Christopher Alexand…

PS 学习笔记

书籍&#xff1a;Photoshop 2022从入门到精通-敬伟-微信读书 1. PS 常用快捷键 复位右侧基本工作栏&#xff1a;【窗口】-【工作区】- 【复位基本功能】 Ctrl 鼠标滚轮&#xff1a;主界面图片左右滚动Shift 鼠标滚轮&#xff1a;主界面图片上下滚动Alt 鼠标滚轮&#xff1…

算法通关村第19关【青铜】| 动态规划

动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;是一种解决多阶段决策过程最优化问题的数学方法。它通常用于解决那些具有重叠子问题和最优子结构性质的问题&#xff0c;这些问题可以分解为多个相互关联的子问题。 动态规划的核心思想是将原问题分解为…

模板学堂|DataEase协助电商企业开展用户运营

DataEase开源数据可视化分析平台于2022年6月正式发布模板市场&#xff08;https://dataease.io/templates/&#xff09;。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板&#xff0c;方便用户根据自身的业务需求和使用场景选择对应的仪表板模板&#xff0c;并…

MyBatis进行单表多表查询以及其中的${}涉及的SQL注入

目录 回顾&#xff1a; 参数占位符#{}和${} ${}唯一使用地方 使用${}造成的SQL注入漏洞 like查询 mapper中接收结果的参数 resultType和resultMap​编辑 多表查询 回顾&#xff1a; 参数占位符#{}和${} #{} 占位符语法通常用于模板引擎或动态查询语句中。它是一种更加安全的…

docker中使用GPU+rocksdb

配置环境 delldell-Precision-3630-Tower  ~  lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focaldelldell-Precision-3630-Tower  ~  nvcc --version nvcc: NVIDIA (R) Cuda comp…

Aroid问题笔记 - ViewPager嵌套RecyclerView,降低ViewPager灵敏度

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

力扣:133. 克隆图(Python3)

题目&#xff1a; 给你无向连通图中一个节点的引用&#xff0c;请你返回该图的深拷贝&#xff08;克隆&#xff09;。 图中的每个节点都包含它的值 val&#xff08;int&#xff09; 和其邻居的列表&#xff08;list[Node]&#xff09;。 class Node {public int val;public Lis…

高程DEM-等高线生成-AutoCAD等高线

高程DEM-等高线生成-AutoCAD等高线 发布时间&#xff1a;2018-01-17 版权&#xff1a; 同步视频教程&#xff1a;卫星地图_高清卫星地图_卫星地图视频_下载高程等高线使用视频教程 专题地图制作视频教程&#xff1a;卫星地图_高清卫星地图_卫星地图视频_地图数据应用&#xf…

【14】基础知识:React - redux

一、 redux理解 1、学习文档 英文文档&#xff1a;https://redux.js.org/ 中文文档&#xff1a;http://www.redux.org.cn/ Github: https://github.com/reactjs/redux 2、redux是什么 redux 是一个专门用于做状态管理的 JS 库(不是 react 插件库)。 它可以用在 react&am…

Unity2023, Unity2022, Unity2021的性能对比(帧率)

最近由于需要用到Unity最新版的一些功能&#xff0c;比如Spline&#xff0c;比如Foward渲染&#xff0c;新项目用了Unity2022.3.5版本&#xff0c;但是出包之后&#xff0c;感觉帧率很低。本着好奇的态度&#xff0c;专门写了一个测试场景&#xff0c;分别在Unity2023.1.15&…

【数据仓库】hadoop生态圈与数据仓库

文章目录 1.大数据定义2. Hadoop与数据仓库3. 关系数据库的可扩展性瓶颈4. CAP理论5. Hadoop数据仓库工具5.1. RDS和TDS5.2. 抽取过程5.3. 转换与装载过程5.4. 过程管理和自动化调度5.5&#xff0e;数据目录&#xff08;或者称为元数据管理&#xff09;5.6&#xff0e;查询引擎…