Tom——部署及优化

Tomcat介绍

在这里插入图片描述

  • 免费的、开放源代码的Web应用服务器
  • Apache软件基金会(Apache Software Foundation) Jakarta项目中的一个核心项目
  • 由Apache、 Sun和一些公司及个人共同开发而成
  • 深受Java爱好者的喜爱,并得到部分软件开发商的认可
  • 目前比较流行的Web应用服务器

一、Tomcat核心组件

三大件构成Tomcat

1、JSP 提供前端页面 (java)

2、Servlet 提供后端 (java)

3、web (http协议,tcp/ip)

在这里插入图片描述

二、Tomcat处理请求过程

  1. 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/11. 1Connector 获得

  2. Connector把该请求交给它所在的Service的Engine来处理, 并等待来自Engine的回应

  3. Engine获得请求localhost/yy/index. JSP匹L配它所拥有的所有虚拟主机Host

  4. Engine匹配到名为localhost的Host. 即使匹配不到也把请求交给该Host处理, 因为该Host被定义为该Engine的默认主机。

  5. localhost Host获得请求/yy/index.JSP, 匹配它所拥有的所有Context。

  6. Host匹配到路径为/yy的Context.。如果匹配不到,就把该请求交给路径名为Context去处理。

  7. path=" /yy"的Context获得请求/index.JSP,在它的mapping table中 寻找对应的Servlet。

  8. Context匹配到URL PATTERN 为*. JSP 的Servlet,对应于JSPServlet类。

  9. 构造HttpServletRequest对象和HttpServletResponse对象, 作为参数调用JSPServlet 的doGet ()或doPost()方法。

  10. Context把执行完了之后的HttpServletResponse对象返回给Host。

  11. Host把HttpServletResponse对象返回给Engine。

  12. Engine把HttpServletResponse 对象返回给Connector。

  13. ConnectorHttpServletResponse对象返回给客户browser。

在这里插入图片描述

container 容器有两个端口号,外端口,内端口,由connector连接器提供

engine 引擎

context 前端页面

在这里插入图片描述

Tomcat安装部署

一、下载并安装jdk

jdk是Java语言的软件开发工具包,属于编译器,将源码文件转换成可执行文件

jdk时Tomcat运行的必要环境

根据计算机硬件配置,选择安装包

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

设置环境变量

环境变量(PATH):(2种)

用户环境变量:只针对当前用户生效

系统环境变量:只针对当前主机有效(用任何用户在当前主机都生效),换一台主机就失效 (bin目录)

#安装包已下载,通过mount挂载到centos并进行解压

[root@localhost ~]# mkdir /tom
[root@localhost tom]# mount.cifs //192.168.17.1/tom /tom
Password for root@//192.168.17.1/tom:  
[root@localhost ~]# cd /tom
[root@localhost tom]# ls
apache-jmeter-5.1.zip  apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm
[root@localhost tom]# rpm -ivh jdk-8u201-linux-x64.rpm 
[root@localhost tom]# cd /usr/java/
[root@localhost java]# ls
default  jdk1.8.0_201-amd64  latest
[root@localhost java]# cd jdk1.8.0_201-amd64/
[root@localhost jdk1.8.0_201-amd64]# ls
bin        javafx-src.zip  LICENSE      release                             THIRDPARTYLICENSEREADME.txt
COPYRIGHT  jre             man          src.zip
include    lib             README.html  THIRDPARTYLICENSEREADME-JAVAFX.txt
[root@localhost jdk1.8.0_201-amd64]# pwd
/usr/java/jdk1.8.0_201-amd64

#设置环境变量

[root@localhost jdk1.8.0_201-amd64]# vim /etc/profile         //编辑系统变量文件
#末行添加三条
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost jdk1.8.0_201-amd64]# source /etc/profile		//使环境变量生效

#验证

[root@localhost jdk1.8.0_201-amd64]# java -version		//查看jdk版本(为安装的版本)
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

二、安装并启动Tomcat

官网下载地址:https://tomcat.apache.org

安装启动

#安装包已下载,挂载并解压

[root@localhost ~]# cd /tom
[root@localhost tom]# ls
apache-jmeter-5.1.zip  apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm
[root@localhost tom]# tar zxvf apache-tomcat-9.0.16.tar.gz -C /usr/local

#切换至安装目录并进行优化

[root@localhost tom]# cd /usr/local/
[root@localhost local]# ls
apache-tomcat-9.0.16  bin  etc  games  include  lib  lib64  libexec  nginx  sbin  share  src
[root@localhost local]# mv apache-tomcat-9.0.16/ tomcat           //解压后名字太长,重命名
[root@localhost local]# ls
bin  etc  games  include  lib  lib64  libexec  nginx  sbin  share  src  tomcat
[root@localhost local]# cd tomcat/
[root@localhost tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat]# cd bin/
[root@localhost bin]# ls
bootstrap.jar       commons-daemon.jar            digest.sh         shutdown.sh           tool-wrapper.sh
catalina.bat        commons-daemon-native.tar.gz  makebase.bat      startup.bat           version.bat
catalina.sh         configtest.bat                makebase.sh       startup.sh            version.sh
catalina-tasks.xml  configtest.sh                 setclasspath.bat  tomcat-juli.jar
ciphers.bat         daemon.sh                     setclasspath.sh   tomcat-native.tar.gz
ciphers.sh          digest.bat                    shutdown.bat      tool-wrapper.bat
[root@localhost bin]# ln -s /usr/local/tomcat//bin/startup.sh /usr/bin/		//将开启脚本添加到/usr/bin中,自动识别
[root@localhost bin]# ln -s /usr/local/tomcat//bin/shutdown.sh /usr/bin/		//将关闭脚本添加到/usr/bin中,自动识别

#关闭防火墙,执行开启脚本

[root@localhost bin]# systemctl stop firewalld
[root@localhost bin]# setenforce 0
[root@localhost bin]# startup.sh
[root@localhost bin]# netstat -ntap | grep 8080
tcp6       0      0 :::8080              :::*                LISTEN      20887/java       

#开启成功,验证访问首页

在这里插入图片描述

Tomcat目录结构

1、bin:存放启动和关闭 Tomcat 的脚本文件, 比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件。

2、 conf:存放 Tomcat 服务器的各种配置文件,比较常用的是 server.xml、context…xml、tomcat-users.xml、web.xml 四个文件。

3、 lib:存放 Tomcat 服务器的 jar 包,一般不作任何改动,除非连接第三方服务,比如 redis, 那就需要添加相对应的 jar 包。

4、 logs:存放 Tomcat 日志。

5、temp:存放 Tomcat 运行时产生的文件。

6、webapps:存放项目资源的目录。

7、work:Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到。

在这里插入图片描述

Tomcat启动时间优化

缩短启动时间的命令:securerandom.source=file:/dev/urandom

[root@localhost bin]# cd /usr/java/jdk1.8.0_201-amd64/jre/lib/security
[root@localhost security]# ls
blacklist  blacklisted.certs  cacerts  java.policy  java.security  javaws.policy  policy  trusted.libraries
[root@localhost security]# vim java.security

在这里插入图片描述

三、配置虚拟主机

有多个项目同时运行时,一台服务器不建议运行多个Tomcat服务,需要配置虚拟主机

通过两个域名访问到不同的项目内容:

需求:新增两个域名www.kgc.com和www.accp.com,通过两个域名访问到不同的项目内容

1、搭建dns域名解析

#安装

[root@localhost ~]# yum install -y bind

#配置主配置文件

[root@localhost ~]# vim /etc/named.conf 

在这里插入图片描述
#配置区域配置文件

[root@localhost ~]# vim /etc/named.rfc1912.zones 

在这里插入图片描述

#配置区域数据配置文件

[root@localhost ~]# cp -p /var/named/named.localhost /var/named/kgc.com.zone
[root@localhost ~]# vim /var/named/kgc.com.zone
[root@localhost ~]# cp -p /var/named/kgc.com.zone /var/named/accp.com.zone

在这里插入图片描述

#重启服务并验证域名解析

[root@localhost ~]# systemctl restart named

在这里插入图片描述

2、配置虚拟主机

#创建kgc和accp项目和文件

[root@localhost ~]# mkdir /usr/local/tomcat/webapps/kgc
[root@localhost ~]# echo "hello--kgc" > /usr/local/tomcat/webapps/kgc/index.jsp
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/accp
[root@localhost ~]# echo "hello--accp" > /usr/local/tomcat/webapps/accp/index.jsp

#更改主配置文件

[root@localhost ~]# cd /usr/local/tomcat/conf/
[root@localhost conf]# vim server.xml

定义host属性

[root@localhost conf]# vim server.xml

<Host name="www.kgc.com" appBase="/usr/local/tomcat/webapps"      //定义域名及工作目录
unpackWARs="true" autoDeploy="true" 						//更新war包,支持自动部署
xmlValidation="false"      						//关闭xml文件验证
xmlNamespaceAware="false">					//关闭命名空间
<Context docBase="/usr/local/tomcat/webapps/kgc"		//指定站点路径
path="" reloadable="true" />		//path设定为空,加载默认类	 reloadable进行重载
</Host>


<Host name="www.accp.com" appBase="/usr/local/tomcat/webapps" 
unpackWARs="true" autoDeploy="true" xmlValidation="false" 
xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/accp" 
path="" reloadable="true" />
</Host>

#重启服务并进行访问验证

[root@localhost conf]# shutdown.sh 
[root@localhost conf]# startup.sh 

客户端绑定DNS地址:192.168.17.142

http://www.kgc.com:8080/

http://www.accp.com:8080/

Tomcat默认端口8080

在这里插入图片描述

四、Tomcat优化

Tomcat的缺省配置并不适合生产环境,它会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要有三方面,分为操作系统优化(内核参数优化)Tomcat 配置文件参数优化, Java 虚拟机(JVM)调优。配合jmeter 压测工具进行调优前和调优后的数据进行比较。

Tomcat主配置文件server.xml常用的配置参数

如果对代码进行了动静分离处理,静态页面和图片等数据就不需要做Tomcat处理,也就不需要在Tomcat中配置压缩

maxThreads connectionUploadTimeout
minSpareThreads acceptCount
maxSpareThreads compression
URIEncoding compressionMinSize
connnectionTimeout compressableMimeType
enableLookups noCompressionUserAgents=“gozilla,traviata”
disableUploadTimeout true
  • [maxThreads] :Tomcat 使用线程来处理接收的每个请求,这个值表示Tomcat 可创建的最大的线程数,默认值是200.

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

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

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

  • [ connnectionTimeout]:网络连接超时,单位:毫秒,设置为0表示水不超时,这样设置有隐患的。通常默认20000毫秒就可以

  • [ enableLookups]:是否反查域名,以返回远程主机的主机名,取值为: true 或false, 如果设置为false, 则直接返回IP地址,为了提高处理能力,应设置为false.

  • [disableUploadTimeout]:上传时是否使用超时机制。应设置为true.

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

  • [acceptCount]:指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为100个。

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

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

  • [compressableMimeType]:压缩类型,指定对哪些类型的文件进行数据压缩。

  • [noCompressionUserAgents=“gozilla,traviata”]:对于以下的浏览器,不启用压缩

    如果已经对代码进行了动静分离,静态页面和图片等数据就不需要Tomcat处理了,那
    么也就不需要在Tomcat中配置压缩了。因为这里只有一台.Tomcat服务器,而且压测的是
    Tomcat 首页,会有图片和静态资源文件,所以这里启用压缩

实例:

1、安装jdk(环境)

准备好安装源,直接安装jdk

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

在这里插入图片描述

到C:\Program Files\Java\jdk1.8.0_181\bin目录,复制路径

在这里插入图片描述
设置系统环境变量:右击我的电脑-属性–高级系统设置–环境变量–系统变量–修改Path
在这里插入图片描述

2、安装压测工具

打开软件包

在这里插入图片描述

打开压测脚本

在这里插入图片描述

现在还未进行优化,压测尝试,得出平均值(刚开始可能不准,可以多测试几次,取平均值)

在这里插入图片描述

3、参数优化
[root@localhost conf]# vim /usr/local/tomcat/conf/server.xml 

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
minSpareThreads="50"
enableLookups="false"
disableUploadTimeout="true"
acceptCount="300"
maxThreads="500"
processorCache="500"
URIEncoding="UTF-8"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png"/>

在这里插入图片描述

优化后压测平均值

在这里插入图片描述

发布了72 篇原创文章 · 获赞 44 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ML908/article/details/103859458
tom
今日推荐