Tomcat的优化多实例部署

news2024/12/27 14:51:54

一.tomcat核心组件模块

1.web容器:接受.响应请求 2.展示动态页面

2..JSP容器:翻译java---》servlet

3.serverlet容器:serverlet代码格式是用于JSP容器处理

简述:

web容器 :1.接受、响应请求 2.展示动态页面

JSP容器:翻译java---》servlet

serverlet容器:借助catalina 来执行servelet代码

1.2. toncat'功能组件结构

cannector:负责外部接收和响应请求

containe:负责对内处理业务逻辑

service:对外提供的web服务主要包含cennector和comtainer两核心组件

二.Tomcat 优化

(1)Tomcat默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面,分别为操作系统优化(内核参数优化),Tomcat配置文件参数优化,Java虚拟机(JVM)调优。

常见的优化相关参数

8080:tomcat 的http默认监听端口   

8443:http s 的默认是端口没有开启  要开启先去生成证书(SSL)

8005:来关闭tomcat的服务端口,使用shutdown关闭就是这个端口

8009:连接器的监听端口(负责和其他的http服务器建立连接),把tomcat与其他http服务集成时,就需要用到连接器

(2)maxThreads

Tomcat使用线程来处理接收的每个请求,这个值表示Tomcat可创建的最大的线程数,即支持的最大并发连接数,默认值是 200。(根据Tomcat的请求数量设置)

如tomcat挂了,服务正常起来:最大线程数的问题,查看是否超过了默认值或者自己设置的最大线程数

(3)minSpareThreads

最小空闲线程数,Tomcat启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是 10。

平常设置50-80之间即可,设置的较大会浪费资源

(4)maxSpareThreads

最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制)。一般不需要指定。
(5)URIEncoding

指定 Tomcat 容器的 URL 编码格式,语言编码格式这块倒不如其它web服务器软件配置方便,需要分别指定。

一般是utf-8

(6)connectionTimeout

网络连接超时,单位:毫秒,设置为 0

表示永不超时,这样设置有隐患的。通常默认 20000 毫秒就可以。
(7)enableLookups

是否反查域名,以返回远程主机的主机名,取值为: true 或false,如果设置为 false,则直接返回 IP 地址,为了提高处理能力,应设置为 false。(如不是false会陷入循环)
(8)disableUploadTimeout

上传时是否使用超时机制。应设置为 true。
(9)connectionUploadTimeout

上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,以使servlet有较长的时间来完成它的执行,需要与上一个参数一起配合使用才会生效。
(10)acceptCount

指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为 100 个。如果超出默认值或者自己设置的值,将会丢弃。
(11)compression

是否对响应的数据进行GZIP压缩,off:表示禁止压缩、 on:表示允许压缩 (文本将被压缩)、force: 表示所有情况下都进行压缩,默认值为:off——压缩数据后可以有效的减少页面的大小,一般可以减小 1/3 左右,节省带宽。

(12)compressionMinSize

表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是 2048。

超过默认值才会开启压缩,低于不会压缩

(13)compressableMimeType

压缩类型,指定对哪些类型的文件进行数据压缩。

(14)noCompressionUserAgents=“gozilla,traviata”

对于以下的浏览器,不启用压缩

1.2优化的配置文件

vim /usr/local/tomcat/conf/server.xml
. . . . . .
#端口
<Connector port="8080" protocol="HTTP/11.1"connectionTimeout="20000"
redirectPort="8443"
--71行--插入
#最小空闲线程数
minSpareThreads="50"
是否反查域名
enableLookups="false"
#上传时是否使用超时机制
disableUploadTimeout="true"
#指定当前所有可以使用处理请求的线程数
acceptCount="300"
#使用线程数来处理接受的每个请求
maxThreads="500"
#系统或程序可以使用 500 MB 的处理器(CPU)缓存空间,以提高程序的运行速度。
processorCache="500"
#指定tomcat容器的URL编码格式
URIEncoding="UTF-8"
#是否对响应的数据进行GZIP压缩
compression="on"
#压缩的最小值
compressionMinSize="2048"
#支持压缩类型
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"/>

 三.简述Tomcat请求过程

1用户浏览器访问8080端口,到达connector

2.connector在转发给contauner 在下发给四个容器

3.处理完四个容器在转发 connector 在转发给用户

四.Tomcat 多实例部署

多实例部署图示

1.关闭防火墙

拖入软件包

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

 2.安装JDk 设置JDK环境变量

安装jdk
rpm -ivh jdk-8u371-linux-x64.rpm

设置JDK环境变量
vim /etc/profile.d/java.sh
                                          
export JAVA_HOME=/usr/java/jdk1.8.0-x64                           #定义环境变量
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar #定义环境变量
export PATH=$JAVA_HOME/bin:$PATH                                  #定义环境变量

source /etc/profile.d/java.sh                   #刷新文件,使立即生效
java -version                                   #再次查看JDK版本   

 3.解压tomcat  创建目录

 tar xf apache-tomcat-8.5.16.tar.gz

mkdir /usr/local/tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2

4.配置 tomcat 环境变量

配置 tomcat 环境变量
vim /etc/profile.d/tomcat.sh
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1

#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2

source /etc/profile.d/tomcat.sh

 5.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号

vim /usr/local/tomcat/tomcat2/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN">		#22行,修改Server prot,默认为8005 -> 修改为8006
<Connector port="8081" protocol="HTTP/1.1"		#69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />	#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010

 

 6.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量

添加tomcat1 :vim /usr/local/tomcat/tomcat1/bin/startup.sh 

vim /usr/local/tomcat/tomcat1/bin/startup.sh 


 60 exec "$PRGDIR"/"$EXECUTABLE" start "$@"
 61 export CATALINA_BASE=$CATALINA_BASE1
 62 export CATALINA_HOME=$CATALINA_HOME1
 63 export TOMCAT_HOME=$TOMCAT_HOME1

 

添加tomcat1:vim /usr/local/tomcat/tomcat1/bin/shutdown.sh

vim /usr/local/tomcat/tomcat1/bin/shutdown.sh

 61 export CATALINA_BASE=$CATALINA_BASE1
 62 export CATALINA_HOME=$CATALINA_HOME1
 63 export TOMCAT_HOME=$TOMCAT_HOME1

添加tomcat2 : vim /usr/local/tomcat/tomcat2/bin/startup.sh

 vim /usr/local/tomcat/tomcat2/bin/startup.sh 

 
 61 export CATALINA_BASE=$CATALINA_BASE2
 62 export CATALINA_HOME=$CATALINA_HOME2
 63 export TOMCAT_HOME=$TOMCAT_HOME2

 

 添加tomcat2 : vim /usr/local/tomcat/tomcat2/bin/shutdown.sh

vim /usr/local/tomcat/tomcat2/bin/shutdown.sh


 61 export CATALINA_BASE=$CATALINA_BASE2
 62 export CATALINA_HOME=$CATALINA_HOME2
 63 export TOMCAT_HOME=$TOMCAT_HOME2

 7.启动各 tomcat 中的 /bin/startup.sh 

#开启
/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

#关闭
/usr/local/tomcat/tomcat1/bin/shutdown.sh
/usr/local/tomcat/tomcat2/bin/shutdown.sh


​
查看端口是否开启
netstat -natp | grep java

​

 8.浏览器访问测试


http://192.168.10.80:8080

http://192.168.10.80:8081 

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

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

相关文章

python之 flask 框架

创建安装虚拟环境 两种方法 第二种 # 先打开cmd 中断 # 查看virtual是否安装过 pip show virtualenv # 安装 pip install virtualenvwrapper-win # workon 查看虚拟环境 vorkon # 切换虚拟环境 # workon 虚拟环境 # mkvirtualenv 创建新的虚拟环境 mkvirtualenv falsk2…

MySQL 字符集与比较规则

字符集与比较规则 一. 字符集相关操作1. 查看字符集1.1 查看数据库当前字符集配置1.2 查看某数据库/数据表字符集 2. 修改字符集2.1 全局修改字符集2.2 修改已有库表字符集 3. 字符集级别二. 比较规则1. 后缀表示含义2. 查看指定数据集比较规则3. 查看/修改数据库/表比较规则 一…

计算机视觉:窥探数字世界的眼睛

目录 简介&#xff1a; 一. 计算机视觉的起源与发展 二. 计算机视觉的应用领域 三. 计算机视觉的挑战与未来发展 结论&#xff1a; 简介&#xff1a; 计算机视觉&#xff08;Computer Vision&#xff09;是人工智能&#xff08;AI&#xff09;领域中的一个重要分支&#…

同一VLAN不同交换机之间的数据转发

实验环境&#xff1a; 思科模拟器&#xff0c;Cisco Packet Tracer 实验拓扑&#xff1a; 配置步骤&#xff1a; &#xff08;1&#xff09;配置四台PC的IP地址 双击PC选择Desktop&#xff0c;然后选择IP Configuration配置ip &#xff08;2&#xff09;配置交换机 双击交换…

登录校验-interceptor/拦截器

Interceptor 概念&#xff1a;拦截前端对后端的某些请求 使用步骤 自定义拦截器类&#xff0c;实现HandlerInterceptor接口&#xff0c;重写所有的方法&#xff08;preHandle方法在controller执行之前执行、【postHandle、afterCompletion】在controller执行后执行&#xff0…

基于java,springboot的零食零售系统设计与实现

背景 本系统实现管理员&#xff1a;首页、个人中心、用户管理、零食分类管理、零食信息管理、订单评价管理、系统管理、订单管理&#xff0c;用户&#xff1b;首页、个人中心、订单评价管理、我的收藏管理、订单管理&#xff0c;前台首页&#xff1b;首页、零食信息、零食资讯…

Vue工程创建及应用

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

Python Pandas之loc、iloc

df.loc 通过标签索引获取数据 df.iloc 通过位置索引获取数据

Airtest:Windows桌面应用自动化测试二【Airtest基于图像识别自动控制手机App流程】

Airtest基于图像识别自动控制手机App流程 一、Airtest基于图像识别自动控制手机App流程二、基于图像识别生成脚本有两种操作&#xff1a;三、Airtest基于Poco的UI组件自动化控制App流程四、Airtest实现手机群控操作 Airtest介绍与脚本入门 Airtest相关api操作 一、Airtest基于…

暑期学JavaScript【第三天】

事件流 很多时候&#xff0c;一个事件可能会被多个元素监听。那么这些元素应该按什么顺序响应呢&#xff1f;从父到子称为捕获&#xff0c;从子到父称为冒泡。 事件捕获 可选参数&#xff0c;true or fause&#xff0c;带true代表按捕获方式响应 obj.addEventListener(cli…

短视频seo源码部署打包分享---开源

功能概要&#xff1a; 1. 按关键词搜索账号排名 2. 按关键词布局查询视频排名 3. 按天计费功能开发 4. 达标天数及关键词数量统计 开发概要&#xff1a; 区别于其他开发者&#xff0c;同类产品多用第三方&#xff0c;如&#xff1a;站长之家&#xff0c;本系统代码开发使…

| 从头打造个人网站(超详细)

哈喽🤗,这篇博客从0开始教大家创建自己的网站,包含个人网站,商用网站等,并且提供模板类型,提供修改模块样本~ 看完本博客你将会收获: 一个想要的类型网站学习React解答过程中遇到的问题最终效果 那就开始吧👩‍💻👨‍💻 ********************************…

AutoSAR系列讲解(入门篇)4.9-BSW小结

首先&#xff0c;要恭喜各位&#xff0c;最为枯燥难懂的一章你已经看完了。也许现在你还是一头雾水&#xff0c;但是相信大部分人都差不多&#xff0c;不必着急&#xff0c;因为AutoSAR单纯看理论最终也就只能看到这个程度了。所以看不太懂的小伙伴在这里先给自己一个定位&…

POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 主体架构与接口

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

Python dict keys方法:获取字典中键的序列【将keys转为list】

描述 dict.keys()方法是Python的字典方法&#xff0c;它将字典中的所有键组成一个可迭代序列并返回。 使用示例 >>> list({Chinasoft:China, Microsoft:USA}.keys()) [Chinasoft, Microsoft] >>> test_dict {Chinasoft:China, Microsoft:USA, Sony:Japan,…

JetBrains goland、pycharm、webstorm、phpstorm 对比两文件内容是否一致

对比文件 JetBrains goland、pycharm、webstorm、phpstorm 对比两文件内容是否一致 第一种 打开文件&#xff0c;按住键盘上的CTRL键&#xff0c;然后鼠标右键&#xff0c;点击菜单中的”Compare with Clipboard”&#xff0c;左侧就可以粘贴文件内容对比 第二种 在编辑器窗口中…

MyBatis使用PageHelper插件实现分页查询

1.引入依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.1</version> </dependency>2.在mybatis-config.xml⽂件中配置插件 <plugins><plugin interce…

搭建Home Assistant智能家居系统 - 随时随地控制你的家庭设备「内网穿透」

文章目录 前言1. 安装Home Assistant2. 配置Home Assistant3. 安装cpolar内网穿透3.1 windows系统3.2 Linux系统3.3 macOS系统 4. 映射Home Assistant端口5. 公网访问Home Assistant6. 固定公网地址6.1 保留一个固定二级子域名6.2 配置固定二级子域名 转载自远程穿透的文章&…

用于保护虚拟机数据安全的VMware备份方案!

​什么是有效的VMware备份方案&#xff1f; ​由于操作风险、自然灾害、恶意软件攻击、停电等意外状况的影响&#xff0c;备份VMware虚拟机是很重要的&#xff0c;它可以有效防止出现数据丢失和业务中断的情况。 一般来说&#xff0c;有效的VMware备份方案通常应该具…

pikache靶场通关——SSRF攻击

文章目录 前言环境第一关、SSRF&#xff08;curl&#xff09;Step.1、http协议链接本地文件Step.2、file协议读取C盘下的配置文件Step.3、dict协议扫描内网其他主机的端口开放情况Step.4、使用burp扫描内网其他主机的端口开放情况Step.5、后端源码分析 第二关、SSRF(file_get_c…