当前位置: 首页 > news >正文

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请求。

...

相关文章:

tomcat 服务器

tomcat 服务器 tomcat: 是一个开源的web应用服务器。区别nginx&#xff0c;nginx主要处理静态页面&#xff0c;那么动态请求&#xff08;连接数据库&#xff0c;动态页面&#xff09;并不是nginx的长处&#xff0c;动态的请求会交给tomcat进行处理。 nginx-----转发动态请求-…...

如果你有一次自驾游的机会,你会如何准备?

常常想来一次说走就走的自驾游&#xff0c;但是光是想想就觉得麻烦的事情好多&#xff1a;漫长的公路缺少娱乐方式、偏僻拗口的景点地名难以导航、不熟悉的城市和道路容易违章…… 也因为如此&#xff0c;让我发现了HUAWEI HiCar这个驾驶人的宝藏&#xff01; 用HUAWEI HiCar…...

关于ts的keyof

type props_type {name: string,age: number }const props: props_type {name: tjq,age: 18 }for (const key in props) { //props[key]出现红色波浪线const value props[key]; }why&#xff1f; 经过我查阅多方资料&#xff0c;在网上看到一个比较合适的例子 地址&#xf…...

Go实现CORS(跨域)

引言 很多时候&#xff0c;需要允许Web应用程序在不同域之间&#xff08;跨域&#xff09;实现共享资源。本文将简介跨域、CORS的概念&#xff0c;以及如何在Golang中如何实现CORS。 什么是跨域 如果两个 URL 的协议、端口&#xff08;如果有指定的话&#xff09;和主机都相…...

第一章:变量和简单的数据类型

第一节 变量 variable(变量)&#xff0c;每个变量指向一个值————与该变量相关联的信息 message"hello python world!" print(message) 1.1变量的命名和使用 1.变量名只能包含数字(0~9)、字母(Aa~Zz)和下划线(_)。变量可以使用字母和下划线作为开头&#xff0c…...

【初识Linux】:常见指令(2)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux的基础知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…...

“torch.load“中出现的“Unexpected key(s) in state_dict“报错问题

问题&#xff1a; 解决&#xff1a; 添加strictFalse&#xff0c;允许加载过程中出现不匹配的键。但请注意,仍然需要确保模型中的主要参数能够正确加载&#xff0c;以确保模型的有效性。 model.load_state_dict(state_dict) # 改为&#xff1a; model.load_state_dict(state…...

使用dasviewer加载osgb模型,不显示纹理,黑乎乎的怎么解决?

答&#xff1a;查看一下是不是点到快捷键切换成无纹理模式了。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方便快捷的数据浏览操作。#DasViewer##实景…...

Qtday01(qt简介、简单窗口组件)

今日任务 仿qq登录界面&#xff0c;QT实现 代码&#xff1a; 头文件&#xff1a; #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QLineEdit> #include <QLabel> #include <QPushButton> #include <QtDebug> #…...

【SA8295P 源码分析 (一)】41 - SA8295所有镜像位置、拷贝脚本、生成QFIL包 及 Fastboot 下载命令介绍

【SA8295P 源码分析】41 - SA8295所有镜像位置、拷贝脚本、生成QFIL包 及 Fastboot 下载命令介绍 一、SA8295 各镜像位置二、SA8295 QNX 侧镜像拷贝脚本三、SA8295 Android 侧镜像拷贝脚本四、使用QFIL 下载整包五、Fastboot 下载命令整理系列文章汇总见:《【SA8295P 源码分析…...

AtCoder abc130

F题提交了无数遍&#xff0c;最后发现是三分求解的写法错了 C - Rectangle Cutting 盲猜都在xy的中心点时可以无限分割&#xff0c;否则不能 D - Enough Array 前缀和二分求位置 E - Common Subsequence 公共子序列求有几种组合 设 d p [ i ] [ j ] dp[i][j] dp[i][j]代表s取到…...

数据库、数据中台、数据仓库、数据湖区别

数据时代&#xff0c;各行业的企业都已经开始通过数据库来沉淀数据&#xff0c;但是真的论起数据库、数据仓库、数据中台&#xff0c;还是新出现的数据湖&#xff0c;它们的概念和区别&#xff0c;可能知道的人就比较少了&#xff0c;今天我们详细来比较了解一下。 一、数据仓…...

缺失的数据范围,思维,hduoj

Problem Description 著名出题人小Q出过非常多的题目&#xff0c;在这个漫长的过程中他发现&#xff0c;确定题目的数据范围是非常痛苦的一件事。 每当思考完一道题目的时间效率&#xff0c;小Q就需要结合时限以及评测机配置来设置合理的数据范围。 因为确定数据范围是一件痛苦…...

极简的MapReduce实现

目录 1. MapReduce概述 2. 极简MapReduce内存版 3. 复杂MapReduce磁盘版 4. MapReduce思想的总结 1. MapReduce概述 以前写过一篇 MapReduce思想 &#xff0c;这次再深入一点&#xff0c;简单实现一把单机内存的。MapReduce就是把它理解成高阶函数&#xff0c;需要传入map和…...

更新暑假做过的项目(医学数据多标签分类与多标签分割,医学数据二分类)

写在前面 暑假参与了两个项目&#xff0c;收获颇多。搭建网络有许多走过的弯路与经验&#xff0c;调参也是一个必要的技能&#xff0c;在这里想一并分享给大家我在项目中积累的经验和一些小技巧。 PS&#xff1a;结合个人经验与网上经验&#xff0c;大家斟酌自取。 下面的几个…...

谷歌浏览器访问127.0.0.1时报错 Failed to read the ‘sessionStorage‘ property from ‘Window‘

谷歌浏览器访问 127.0.0.1 时报错如下&#xff1a; Uncaught DOMException: Failed to read the ‘sessionStorage’ property from ‘Window’: Access is denied for this document. 原因&#xff1a; 谷歌浏览器设置中禁止了 127.0.0.1 存储数据到浏览器设备上 解决方法…...

云技术分享 | 快速构建 CodeWhisperer 代码生成服务,让 AI 辅助编程

前言 Amazon CodeWhisperer 是 2023 年 4 月份发布的一款通用的、机器学习驱动的代码生成器服务&#xff0c;CodeWhisperer 经过数十亿行 Amazon 和公开可用代码的训练&#xff0c;可以理解用自然语言&#xff08;英语&#xff09;编写的评论&#xff0c;可在集成式开发环境 (…...

开发万岳互联网医院APP:技术要点和关键挑战

随着移动技术和互联网的飞速发展&#xff0c;互联网医院APP成为医疗领域的一项重要创新。这些应用程序为患者和医生提供了更多便利和互动性&#xff0c;但开发互联网医院APP也伴随着一系列的技术要点和关键挑战。本文将探讨互联网医院APP的技术要点以及在开发过程中需要面对的挑…...

漫谈下一代防火墙与Web应用防火墙的区别

如今&#xff0c;Web应用程序变得越来越复杂&#xff0c;更是黑客非常感兴趣的目标。在谈到网络安全的话题时&#xff0c;我们总会讨论下一代防火墙与Web应用防火墙的区别。当已经拥有下一代防火墙&#xff08;NGFW&#xff09;时&#xff0c;为什么需要Web应用程序防火墙&…...

基于马尔可夫随机场的图像去噪算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、马尔可夫随机场的基本原理 4.2、基于马尔可夫随机场的图像去噪算法 5.算法完整程序工程 1.算法运行效果图预览 原图&#xff1a; 加入噪声的图像&#xff1a; 滤波后的图像 迭代过程…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具&#xff0c;专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑&#xff08;如DBC、LDF、ARXML、HEX等&#xff09;&#xff0c;并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

41道Django高频题整理(附答案背诵版)

解释一下 Django 和 Tornado 的关系&#xff1f; Django和Tornado都是Python的web框架&#xff0c;但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循MVC设计&#xff0c;并强调代码复用。Django有…...