tomcat优化

目录

tomcat

tomcat优点

tomcat核心组件

Web容器

其他

功能组件

connector

container

tomcat处理请求过程

目录文件内容

内存池

堆区

JVM优化

ajp-nio-8009

启动速度优化

配置文件优化


tomcat

tomcat是基于Java代码开发的开放源代码的web应用服务器

tomcat就是处理动态请求和基于Java代码的页面开发,可以在html当中写入Java代码,tomcat可以解析html页面中的Java执行动态请求、动态页面

tomcat的机制有问题,不对tomcat进行优化会出现一些bug,如假死、停机。小集群、小服务、小应用使用tomcat,大并发场景不适合

tomcat优点

1.免费

2.开源,可以二次封装

3.可配置性强,可以根据需要进行自定义配置,包括端口号、虚拟主机等

4.tomcat自带安全机制,可以配置用户认证、授权、加密传输

5.部署应用非常快捷,tomcat会自动部署、自动运行

tomcat核心组件

Web容器

完成文本服务器的功能,是一个web应用

web---->http(s)---->访问页面---->文件index.jsp

web容器中,封装了一组文件,在这一组文件之中进行集中化管理

管理web动态页面

Servlet容器

名字为catalina,处理servlet代码,处理web请求(http),生成动态内容的Java类。

1、处理http请求

2、生产动态内容,为了和数据库交互---->用户发起的;jsp当中的

3、会话管理,跟用户在不同请求之间的状态,通过管理可以在用户访问不同页面时保持用户的状态

4.与数据库交互,servlet可以连接到数据库执行查询和更新操作。这就是servlet能够生成动态内容的原因

JSP容器

jisp将动态页面翻译成servlet代码,并用标准格式展示jsp静态页面

写好一个包之后丢进/usr/local/tomcat/webapps中

jsp jiava server pages 动态页面的开发技术。使用jsp标签,在html页面中插入Java代码

jsp容器---->将html页面中的Java代码翻译---->执行并展示结果

jsp标签通常以<%开头,以%>结尾

其他

面向对象:客观存在的实体和他们之间的关系,映射到计算机程序当中计算机程序被组织成这一组相互作用的对象,每个对象都有数据(属性)和行为(方法)。

类:定义一组属性和方法,创建对象、实例。

封装:对象的属性和方法捆绑在一块,提供一个接口,可以让其他对象使用。

继承:一个类,可以继承另一个类 父类 子类 子类可以重用父类的代码,而且还在不修改代码的情况下,进行扩展

多态:不同类的对象对相同的消息,做出不同的响应。

功能组件

connector

负责对外接收和响应请求,是tomcat与外界的交通枢纽,即负责监听端口,也复杂接受外界请求交给container处理

container

负责对内处理业务逻辑

Engine 引擎,管理虚拟机(service,一个service可以包含多个虚拟主机),可以管理多个虚拟主机,一个个service中只能有一个Engine

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

Context web应用,可以包含多个servlet

wrapper 封装器,最底层,每一个wrapper中都封装一个servlet,负责对象实例的创建、执行、销毁

tomcat处理请求过程

1.输入网址,请求发送到8080端口,被监听获得

2.connector会把请求转发到container处理,由engine查询要访问的虚拟主机---->Host主机站点包含请求页面的位置。webapps---->context,就是index.jsp中的内容---->wrapper(servlet)响应解析,处理请求---->jsp翻译---->页面展示

目录文件内容

bin 存放的是启动和关闭tomcat的脚本文件

conf 

主配置文件 server.xml

contex.html host的默认配置信息

tomcat-user.xml 认证用户密码的配置文件

web.xml servlet的规范标准,配置servlet的文件

lib tomcat运行库依赖的jar包,一般不动,除非链接第三方,如redis、数据库

logs 日志文件

webapps web应用部署的默认目录

work tomcat的工作目录存放jsp编译之后的class文件,清除tomcat文件就是删work目录

JVM 就是Java的虚拟机,是Java应用程序在计算机上运行的核心组件,JVM复制将编译后的Java字节码(.class文件)解释或者编译成本地的机器码,使得计算机能够执行。JVM还提供了内存管理、垃圾回收、线程管理,确保Java程序在不同平台可以有一致的功能

内存池

PS Eden Space 堆内存,存储新创建的对象

PS Old Gen 堆内存,存储长时间存活的对象

PS Survivor Space 堆内存,存储创建之后生命周期较短的对象

Code Cache 非堆内存,存储已经编译的代码

Compressed Class Space 非堆内存,存储已经压缩的类

Metaspace 非堆内存,存储类的元数据

堆区

堆区当中会区分新生代 中生代 老年代

每一个新建的对象占用的空问,就是新生代。
java垃圾回收机制对堆区进行资源回收,新生代中没有被回收的资源,就是中生代。

JVM大小=新生代+中生代+老年代+永久代

JVM优化

catalina.sh 就是servlet代码以及容器管理

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的性能高这个值可以设高一点

-Xmx2048m JAVA堆最大能多大,jm的最大内存。和硬件内存挂钩。根据官方文档,起始值和最大值保持一致,XMS和XMX设为一样的,内存可以设为物理内存的一般

-Xmn768m 新生代的内存大小,官方推荐为整个堆大小的3/8

XX:ParallelGCThreads=2 配置并行收集器的线程数,绝对同时可以有多少个线程进行垃圾回收

XX:Permsize 设置持久代内存的大小,默认是物理内存的1/4

-XX:MaxPermsize=1024m 最大非堆内存的大小,默认是物理内存的1/4

非堆内存是不会被垃圾回收机制处理的,持久代内存与最大非堆内存不能超出操作相系统的可用内存。设置成一样大,可以减轻伸缩堆大小的压力

Djava.awt.headless=true 避免在linux环境下,web不能正常打开,以正常显示图片

-XX:+DisableExplicitGC" 避免JVM空间大起大落,影响系统的响应时间,响应速度变得非常慢

ajp-nio-8009

ajp-nio  连接器的类型 

nio 进行异步非阻塞。

8009 连接器正在监听的端口号。

AJP: 使用ajp协议,将tomcat服务器与前端web服务器进行连接。提供负载均衡和高效的请求转发

http-nio-8080
处理http请求,和客户端通信的端口

tomcat 虚拟主机配置

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

启动速度优化

第一次启动tomcat会发现启动速度很慢,这时需要改变jdk参数

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security

securerandom.source=file:/dev/urandom

配置文件优化

针对server.xml主配置文件的优化。

redirectPort: 如果某连接器支持的协议的是http,当接受客户端发来的请求时https,就会启用此端口(8443)

maxthreads tomcat 使用线程来处理请求的,可以创建的最大线程数,也就是并发连接数,默认为200

minisparethreads 最小空闲线程数,决定了开启tomcat时会有多少线程,默认为10

maxsparethreads 最大备用线程,一旦创建的线程超过这个值,tomcat会关闭不再需要的端口线程,默认为-1,也就是不限制。一般不会指定

URIEncoding URL的格式编码,默认utf-8。需要分别指定,一般不动

connectionTimeout 网络连接超时,单位为毫秒,默认为0,永不超时。一般设置为20000

enablelookups 是否反向解析域名,能够获取远程的主机名。一般设置为false,直接返回IP地址,提高处理能力

disableUploadTimout 上传超时时间,设置为true

connectionUploadTimeout 设置上传超时时间,没有标准

acceptCount 所有可以使用的线程都被占用时可以传入连接请求的最大队列长度,默认为100,超出的直接丢弃不再处理

compression 是否开启页面和响应数据的压缩。off 关 on 开 force 所有情况下都进行压缩。默认是off,建议on打开

compressionMinSize 压缩响应最小值,等于或小于不会响应,一般设置为2048

compressionMimeType 可以被压缩MIME的类型
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python Selenium 设置带账号密码的socks5代理,启动浏览器

selenium添加带有账密的socks5代理 我们都知道在使用selenium开发爬虫的时候不可避免的会使用socks5高匿名代理。一般情况下我们使用方法如下(开发语言为python)&#xff1a; from selenium import webdriver chrome_options webdriver.ChromeOptions() chrome_options.add_…

英特尔处理器被曝出“Downfall”漏洞:可窃取加密密钥

今日&#xff0c;谷歌的一位高级研究科学家利用一个漏洞设计了一种新的CPU攻击方法&#xff0c;该漏洞可影响多个英特尔微处理器系列&#xff0c;并允许窃取密码、加密密钥以及共享同一台计算机的用户的电子邮件、消息或银行信息等私人数据。 该漏洞被追踪为CVE-2022-40982&am…

解决 idea maven依赖引入失效,无法正常导入依赖问题

解决 idea maven依赖引入失效&#xff0c;无法正常导入依赖问题_idea无法导入本地maven依赖_普通网友的博客-CSDN博客 解决 idea maven依赖引入失效&#xff0c;无法正常导入依赖问题 idea是真的好用&#xff0c;不过里面的maven依赖问题有时候还真挺让人头疼&#xff0c;不少小…

【计算机视觉】关于图像处理的一些基本操作

目录 图像平滑滤波处理均值滤波计算过程python实现 高斯滤波计算过程python实现 中值滤波计算过程python实现 图像的边缘检测Robert算子计算过程python实现 图像处理腐蚀算子计算过程python实现 Hog&#xff08;梯度方向直方图&#xff09;特征计算流程&#xff1a;Hog的特征维…

brew+nginx配置静态文件服务器

背景 一下子闲下来了&#xff0c;了解的我的人都知道我闲不下来。于是&#xff0c;我在思考COS之后&#xff0c;决定自己整一个本地的OSS&#xff0c;实现静态文件的访问。那么&#xff0c;首屈一指的就是我很熟的nginx。也算是个小复习吧&#xff0c;复习一下nginx代理静态文…

【Java并发】如何进行死锁诊断?

文章目录 1.什么是死锁2.死锁怎么产生的3.如何进行死锁诊断&#xff1f;3.1 通过命令查看3.2 jconsole可视化工具3.2 VisualVM&#xff1a;故障处理工具 1.什么是死锁 死锁&#xff08;Deadlock&#xff09;是指两个或多个进程&#xff08;线程&#xff09;在执行过程中&#…

Jmeter(二) - 从入门到精通 - 创建测试计划(Test Plan)(详解教程)

1.简介 上一篇中已经教你把JMeter的测试环境搭建起来了&#xff0c;那么这一篇我们就将JMeter启动起来&#xff0c;一睹其芳容&#xff0c;首先宏哥给大家介绍一下如何来创建一个测试计划&#xff08;Test Plan&#xff09;。 2.创建一个测试计划&#xff08;Test Plan&#x…

基于Python爬虫+词云图+情感分析对某东上完美日记的用户评论分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

数据结构——红黑树基础(博文笔记)

数据结构在查找这一章里介绍过这些数据结构&#xff1a;BST&#xff0c;AVL&#xff0c;RBT&#xff0c;B和B。 除去RBT&#xff0c;其他的数据结构之前的学过&#xff0c;都是在BST的基础上进行微小的限制。 1.比如AVL是要求任意节点的左右子树深度之差绝对值不大于1,由此引出…

教程分享:如何制作一个旅游路线二维码?

吃一成不变的早餐&#xff0c;九点出门还会遇见楼下遛狗的大爷&#xff0c;老板掐着表发起了会议邀请&#xff0c;窗外还是那几棵树&#xff0c;天空依旧灰蒙蒙的&#xff0c;羊了个羊第二关还是过不去&#xff0c;理发店的小哥又倚在门口抽烟…… 大多时候&#xff0c;我们的…

Kafka 01——Kafka的安装及简单入门使用

Kafka 01——Kafka的安装及简单入门使用 1. 下载安装1.1 JDK的安装1.2 Zookeeper的安装1.2.1 关于Zookeeper版本的选择1.2.2 下载、安装Zookeeper 1.3 kafka的安装1.3.1 下载1.3.2 解压1.3.3 修改配置文件 2. 启动 kafka2.1 Kafka启动2.2 启动 kafka 遇到的问题2.2.1 问题12.2.…

数学建模—分类模型

本讲将介绍分类模型。对于而分类模型&#xff0c;我们将介绍逻辑回归&#xff08;logistic regression&#xff09;和Fisher线性判别分析两种分类算法&#xff1b;对于多分类模型&#xff0c;我们将简单介绍Spss中的多分类线性判别分析和多分类逻辑回归的操作步骤下。 本题按水…

vue3多页面配置你一定会遇到的问题,踩坑指南

vue3实现多页面打包容易&#xff0c;关键是如何实现本地的开发和调试&#xff1f;我们接下来解决如下几个问题&#xff1a; 1 多页面项目的项目结构是怎样的&#xff1f; --public--src---App.vue---main.js---page1. ---App.vue---main.js----home.vue----list.vue---page2.…

HttpRunner搭建接口自动化测试项目

前言&#xff1a;前面写过一篇PytestAllure接口自动化测试框架搭建的博客&#xff0c;这篇博客学习另外一款优秀的开源的接口自动化测试框架&#xff1a;HttpRunner&#xff0c;本博客主要学习如何搭建基于HttpRunner的接口自动化测试项目 PytestAllure接口自动化测试框架搭建…

编写一个指令(v-focus2end)使输入框文本在聚焦时焦点在文本最后一个位置

项目反馈输入框内容比较多时候&#xff0c;让鼠标光标在最后一个位置&#xff0c;心想什么奇葩需求&#xff0c;后面试了一下&#xff0c;是有点影响体验&#xff0c;于是就有了下面的效果&#xff0c;我目前的项目都是若依的架子&#xff0c;用的是vue2版本。vue3的朋友想要使…

“智农”数字孪生一体化管控平台

数字乡村可视化|数字乡村|农业可视化|高标准农田|数字农业大脑|大棚可视化|数字农业|数字乡村|数字农业研学|数字大棚|智慧大棚|农业数字孪生|智慧农业|数字农业温室|智农|智慧农业可视化|智能温室|智慧温室|农业大数据|农业产业园可视化|植物工厂|可视化农业监控系统|设施农业…

判断时间段是否重叠

1、逻辑公式 时间段1&#xff1a;start1&#xff08;开始时间&#xff09;&#xff0c;end1&#xff08;结束时间&#xff09; 时间段2&#xff1a;start2&#xff08;开始时间&#xff09;&#xff0c;end2&#xff08;结束时间&#xff09; 重叠条件为&#xff1a;start1 <…

I 2C 接口控制器理论讲解

IIC系列文章&#xff1a; (1) I 2C 接口控制器理论讲解 (2) I2C接口控制设计与实现 文章目录 一、 IIC协议二、IIC协议解析1.特点2.规定3.器件地址4.存储地址 三、IIC写时序1.单字节写时序2.连续写时序&#xff08;页写时序&#xff09; 四、IIC读时序1.单字节读时序2.连续读时…

鸿蒙边缘计算网关正式开售

IDO-IPC3528鸿蒙边缘计算网关基于RK3568研发设计&#xff0c;采用22nm先进工艺制程&#xff0c;四核A55 CPU&#xff0c;主频高达2.0GHz&#xff0c;支持高达8GB高速LPDDR4&#xff0c;1T算力NPU&#xff0c;4K H.265/H264硬解码&#xff1b;视频输出接口HDMI2.0&#xff0c;双…

62.不同路径

一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f; 动态规…