一.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