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.mzph.cn/news/114201.shtml

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

相关文章

【5G PHY】5G SS/PBCH块介绍(一)

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

使用crul库和R语言的下载器程序

以下是一个使用crul库和R语言的下载器程序&#xff0c;用于从下载音频。此程序使用了jshk.com.cn/get_proxy的代码。 // 导入必要的库 import ("fmt""github.com/cjlapa/crul""io""net/http""net/url""os" )// 主…

在 Python 中使用 Pillow 进行图像处理【3/4】

第三部分 一、腐蚀和膨胀 您可以查看名为 的图像文件dot_and_hole.jpg&#xff0c;您可以从本教程链接的存储库中下载该文件&#xff1a; 该二值图像的左侧显示黑色背景上的白点&#xff0c;而右侧显示纯白色部分中的黑洞。 侵蚀是从图像边界去除白色像素的过程。您可以通过使用…

运算符重载的三种实现方法

一、重载为一般函数 格式&#xff1a;返回类型 operator 运算符(参数列表) struct Complex{//定义一个复数结构&#xff1a;包括实部与虚部两部分 double real;//实部 double imag;//虚部 }; Complex operator(Complex c1,Complex c2){//对加法运算的重载&#xff1a;将运算符…

vue重修之路由【上】

文章目录 单页应用程序: SPA - Single Page Application路由简介Vue Reouter简介VueRouter的使用&#xff08;52&#xff09;组件的存放目录问题组件分类存放目录 路由的封装抽离 单页应用程序: SPA - Single Page Application 单页面应用(SPA): 所有功能在 一个html页面 上 单…

python调用astra进行人脸检测(使用CascadeClassifier)

1、简述 方法&#xff1a;使用opecv中&#xff0c;CascadeClassifier 级联分类器实现人脸检测&#xff0c;CascadeClassifier就是opencv下objdetect模块中用来做目标检测的级联分类器的一个类&#xff0c;它可以帮助我们检测例如车牌、眼睛、人脸等物体。它的大概原理就是判别…

JS类的继承和实现原理详解

一&#xff1a;前言 各位小伙伴在日常开发中&#xff0c;相信一定遇到过Class这种写法。这代表在JS中创建了一个类&#xff0c;并且可以通过这个类去 new 出一个新的对象。其实在JS中&#xff0c;这个类和java中的类是没有区别的&#xff0c;同样具有属性&#xff0c;方法&…

前端多媒体处理工具——ffmpeg的使用

写在前面 在前端领域&#xff0c;FFmpeg 是一个非常有用的工具&#xff0c;它提供了多种媒体格式的封装和解封装&#xff0c;包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率切换等。可以在多种操作系统安装使用。 安装 下载FFmpeg 在网…

深入探讨 Golang 中的追加操作

通过实际示例探索 Golang 中的追加操作 简介 在 Golang 编程领域&#xff0c;append 操作是一种多才多艺的工具&#xff0c;使开发人员能够动态扩展切片、数组、文件和字符串。在这篇正式的博客文章中&#xff0c;我们将踏上一段旅程&#xff0c;深入探讨在 Golang 中进行追加…

【VSCode】解决Open in browser无效

问题描述&#xff1a; 在VSCode中无论是点击右键&#xff0c;选择在默认浏览器中打开&#xff0c;还是按快捷键alt b都没有反应。 解决办法&#xff1a; 右击文件 --> 在文件资源管理器中显示 右击文件&#xff0c;选择属性 点击更改 选择用默认浏览器打开 最后 此时…

音乐制作软件 Studio One 6 mac中文版软件特点

Studio One mac是一款专业的音乐制作软件&#xff0c;该软件提供了全面的音频编辑和混音功能&#xff0c;包括录制、编曲、合成、采样等多种工具&#xff0c;可用于制作各种类型的音乐&#xff0c;如流行音乐、电子音乐、摇滚乐等。 Studio One mac软件特点 1. 直观易用的界面&…

Defender Antivirus占用资源怎么禁止

前言 有时Defender Antivirus 突然磁盘IO很高。导致机器卡得很&#xff0c;开发代码很不方便&#xff0c;本文就介绍如何禁用这个服务。 操作 下载Defender Control https://www.sordum.org/9480/defender-control-v2-1/ 这是当前的最新版本。下载不了就用云盘地址 &#x…

Android Studio(2022.3.1)设置阿里云源-新旧版本

新版本 #settings.gradle.ktsmaven { url uri("https://maven.aliyun.com/repository/public/") }maven { url uri("https://maven.aliyun.com/repository/google/") }maven { url uri("https://maven.aliyun.com/repository/jcenter/") }ma…

git commit报错:running pre-commit hook: lint-staged

报错截图&#xff1a; 报错信息&#xff1a; running pre-commit hook: lint-staged 解决方式&#xff1a; 在项目(vue)的package.json文件中&#xff0c;查找 “husky” 部分&#xff0c;并确认其下的 “pre-commit” 钩子是否正确地引用了 lint-staged。 其中配置示例如下&a…

大数据测试用例分析

基于大数据分析&#xff0c;对业务系统产生的日志进行智能分析&#xff0c;能够识别日志中的接口、参数、业务流&#xff0c;并依据分析的结果生成测试用例。 问题与背景 业务复杂 业务系统的复杂性&#xff0c;对测试人员的业务能力提出严格要求&#xff0c;加重测试成本。 …

开源网安受邀参加数字安全高峰论坛,为数字经济发展保驾护航

​10月19日&#xff0c;“提升数字安全技术&#xff0c;护航数字经济发展”高峰论坛在常州创意产业园圆满完成。本次论坛由常州国家高新区管委会、常州市工业和信息化局、常州市大数据管理中心主办&#xff0c;聚焦“数据安全”主题&#xff0c;邀请了超百位专家及企业代表共同…

华为云HECS服务器下docker可视化(portainer)

一、docker安装 华为云HECS安装docker-CSDN博客 二、portainer安装 portainer地址&#xff1a;Portainer: Docker and Kubernetes Management Platform 当前portainer分CE&#xff08;开源版&#xff09; 和 BE&#xff08;商业版&#xff09;&#xff0c;用CE即可 1 创建…

Vue3开始

1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;海贼王&#xff09; 经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年…

ARM映像文件组成

引言 ARM编译器将各种源文件&#xff08;汇编文件、C语言程序文件、C语言程序文件&#xff09;编译生成ELF格式的目标文件&#xff08;后缀为.o文件&#xff0c;以下将目标文件简称为.o文件&#xff09;&#xff0c;.o文件经过连接器&#xff0c;和C/C运行时库一起编译生成ELF格…

如何解决香港服务器使用的常见问题

​  站长们在选择香港服务器租用时会考虑到它的各种性能以及稳定性&#xff0c;这是必须的。但是使用过程中还有些问题也不容忽视&#xff0c;比如&#xff1a;带宽资源是否短缺&#xff0c;是否存在安全漏洞&#xff0c;连接是否正常等这些问题也要考虑到。 香港服务器使用中…