理论+实操:tomcat部署及优化————理论讲解

前言:

  • tomcat安装部署
  • 虚拟主机配置
  • tomcat优化

下载网站:

http://tomcat.apache.org/

一:Tomcat介绍

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

二:Tomcat核心组件

在这里插入图片描述

servlet代码是由java写的一个后端

jsp是一个前端页面,最终也会被翻译成servlet代码区执行

tomcat的可以看作一个容器,是由三大组件组成

WEB容器:TCP/IP协议,http

Serlet容器:后端,处理java,html

JSP容器:前端,处理动态网页

三:Tomcat处理请求过程

在这里插入图片描述

connector 连接对象,开放端口

8080端口基于http协议,coyote 接收

container 容器

engine 引擎

host 虚拟主机

context 内容,加载程序

运行servlet,

然后依次返回

四:Tomcat部署步骤

1.下载并安装jdk

2.安装并启动Tomcat

3.配置虚拟主机

在这里插入图片描述

jdk是编译器,把源码文件转换成可执行文件

jdk目前在用的是1.8,现在如果学习的话,就用jdk1.11

以java为例,

abc.java通过编译器可以变成abc.class

环境变量:PATH

用户环境变量:只针对用户有效,换了一个用户就不生效

系统环境变量:只针对主机生效,换了一个用户依旧生效 bin目录

javac 命令是 编译的意思

把java————》class

java是执行命令 执行class

eclipse-inst-win64是编写软件开发环境

jdk是一个编译器引擎

先装jdk

在这里插入图片描述

以管理员身份运行,点两个下一步,安在C盘最好,以免出现故障

在这里插入图片描述
在这里插入图片描述

java se 是基础阶段

在这里插入图片描述

在这里插入图片描述

jre实际上是jvm虚拟机

jdk里面运行的是lib函数库,比如排列工具
在这里插入图片描述

bin下面是命令

在这里插入图片描述

把目录复制下来,C:\Program Files\Java\jdk1.8.0_181\bin

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

修改

在这里插入图片描述

粘贴到开头,用分号隔开

然后确定

打开cmd验证

在这里插入图片描述

此时jdk可以算是安装好,接下来安装环境

java开发环境idea或者eclipse

以管理员身份运行

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在线安装

点击同意

下一步

在这里插入图片描述

下一步

在线安装会出现网速过慢的情况

出现之后,勾选,同意

然后再打开

在这里插入图片描述

这个指的是项目的存储路径

在这里插入图片描述

然后点击Launch

在这里插入图片描述

若是遇到更新组件,直接更新即可

在这里插入图片描述

开发界面

在这里插入图片描述

在这里插入图片描述

点击下一步

在这里插入图片描述

jar log4j

在这里插入图片描述

在这里插入图片描述

然后右键src,new,class

在这里插入图片描述

在这里插入图片描述

windows下的preferences

在这里插入图片描述
在这里插入图片描述

左键双击

在这里插入图片描述

字体选择consolas

然后应用关闭

在这里插入图片描述

访问权限,内文件,文件名

void 代表没有返回值,返回的话写return

main是主进程名称,程序的入口,程序的入口只能有一个,出口可以有多个

小括号里是数组,数组名称string

在这里插入图片描述

在这里插入图片描述

idea:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Java 学习目标

开发环境部署 IDE jdk1.8特性了解 jvm原理(垃圾回收机制)

变量 变量类型字节长度 整形:int Long 浮点:float(单精度) double(双精度) 布尔:boolean (true,false)

​ 字符:char (Kava的英文字符,占两个字节) 字符串:String 枚举类型

条件判断 if if-else if-else-if switch

循环语句 单循环 双循环 嵌套

数组 二维数组

二维数组的第一个中括号代表一维数组个数

第二个中括号代表一维数组中的元素个数

函数 静态函数(可以直接在main中使用) (动态函数需要创建对象才能使用) 带参传入 返回值

——————面向对象特性————

封装、继承、多态(重点)

继承,继承上一级的特性,多态是自身的特性

————————————————————

接口 API 面向接口编程

异常处理

集合框架 List Map

IO 文件流 字符流(适合处理文本数据) 字节流(适合处理图片、视频,文本也可以等) (实现数据持久化的雏形),把内存的文件存储到硬盘中

多线程 thread 锁机制(重点学习了解原理)

网络编程(选学) 网络聊天平台

————————————————————JavaEE——————————————————————————

————初级————

HTML CSS JavaScript(重点) jQuery 前端

servlet(重点,后端:服务端) JSP(用的不多)

jdbc 连接数据库

Mysql 数据库 (DML,DDL,DCL,DQL 事务、视图、索引、存储过程、数据库编程)

备份恢复(冷热、物理逻辑备份、完全差异增量备份、、直接恢复、断点恢复)

————中级————SSM框架

mybaits 框架 spring 框架 (IOC 控制反转、AOP面向切面编程) spring MVC (模式、视图、控制)

高级

spring boot spring cloud docker 分布式 微服务

五:下载JDK

  • jdk是java语言的软件开发工具包
  • jdk是Tomcat运行的必要环境
  • 根据计算机硬件配置,选择安装包
  • 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.tml

在这里插入图片描述

六 :设置环境变量

6.1 编辑/etc/profile文件

[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

6.2 使环境变量生效的命令

[root@localhost jdk1.8.0_201-amd64]# source /etc/profile

6.3 查看jdk版本的命令

[root@localhost jdk1.8.0_201-amd64]# java -version
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

7.1 下载安装包

[root@localhost ~]# wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz

7.2 将安装包移动到/usr/local下重命名

[root@localhost opt]# mv apache-tomcat-9.0.16/ /usr/local/tomcat9

7.3 启动Tomcat

[root@localhost bin]# ls
bootstrap.jar       ciphers.sh                    daemon.sh     setclasspath.bat  startup.sh            version.bat
catalina.bat        commons-daemon.jar            digest.bat    setclasspath.sh   tomcat-juli.jar       version.sh
catalina.sh         commons-daemon-native.tar.gz  digest.sh     shutdown.bat      tomcat-native.tar.gz
catalina-tasks.xml  configtest.bat                makebase.bat  shutdown.sh       tool-wrapper.bat
ciphers.bat         configtest.sh                 makebase.sh   startup.bat       tool-wrapper.sh
[root@localhost bin]# /usr/local/tomcat/bin/startup.sh

7.4 演示:

7.4.1 安装环境包jdk,优化环境变量

[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.254.10/linuxs /abc
Password for root@//192.168.254.10/linuxs:  
[root@localhost ~]# cd /abc
[root@localhost abc]# ls
apache-tomcat-9.0.16.tar.gz       tomcat优化压测.jmx                   
epel-release-latest-7.noarch.rpm  	jdk-8u201-linux-x64.rpm           

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[root@localhost abc]# rpm -ivh jdk-8u201-linux-x64.rpm 
warning: jdk-8u201-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8-2000:1.8.0_201-fcs        ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...

[root@localhost abc]# cd /usr/
[root@localhost usr]# ls
bin  etc  games  include  java  lib  lib64  libexec  local  sbin  share  src  tmp
[root@localhost usr]# cd 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             lib          src.zip
COPYRIGHT       LICENSE      THIRDPARTYLICENSEREADME-JAVAFX.txt
include         man          THIRDPARTYLICENSEREADME.txt
javafx-src.zip  README.html
jre             release
//jre用来存放虚拟机jvm,函数库lib,命令bin

在这里插入图片描述

用户环境变量、系统环境变量

[root@localhost jdk1.8.0_201-amd64]# ls bin/
appletviewer  javafxpackager  jdb      jrunscript    pack200      unpack200
ControlPanel  javah           jdeps    jsadebugd     policytool   wsgen
extcheck      javap           jhat     jstack        rmic         wsimport
idlj          javapackager    jinfo    jstat         rmid         xjc
jar           java-rmi.cgi    jjs      jstatd        rmiregistry
jarsigner     javaws          jmap     jvisualvm     schemagen
java          jcmd            jmc      keytool       serialver
javac         jconsole        jmc.ini  native2ascii  servertool
javadoc       jcontrol        jps      orbd          tnameserv

export 声明全局变量

[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
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)

java环境其实已经默认装好了:实例,openjdk是一个简化版本

[root@localhost ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

默认的是openjava,但是有些组件不支持

在这里插入图片描述

7.4.2 安装tomcat

[root@localhost jdk1.8.0_201-amd64]# tar zxvf /abc/apache-tomcat-9.0.16.tar.gz -C /opt
[root@localhost jdk1.8.0_201-amd64]# cd /opt
[root@localhost opt]# ls
apache-tomcat-9.0.16  httpd-2.4.29  nginx-1.12.2  rh
[root@localhost opt]# mv apache-tomcat-9.0.16/ /usr/local/tomcat9
[root@localhost opt]# cd /usr/local
[root@localhost local]# ls
apache2  etc    include  lib64    nginx  share  tomcat9
bin      games  lib      libexec  sbin   src
[root@localhost local]# cd tomcat9/
[root@localhost tomcat9]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work

webapps 站点

[root@localhost bin]# ls
bootstrap.jar       ciphers.sh                    daemon.sh     setclasspath.bat  startup.sh            version.bat
catalina.bat        commons-daemon.jar            digest.bat    setclasspath.sh   tomcat-juli.jar       version.sh
catalina.sh         commons-daemon-native.tar.gz  digest.sh     shutdown.bat      tomcat-native.tar.gz
catalina-tasks.xml  configtest.bat                makebase.bat  shutdown.sh       tool-wrapper.bat
ciphers.bat         configtest.sh                 makebase.sh   startup.bat       tool-wrapper.sh

[root@localhost bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# systemctl stop firewalld.service
[root@localhost bin]# setenforce 0
[root@localhost bin]# netstat -natp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      28345/java          
[root@localhost bin]# netstat -natp | grep 80
tcp6       0      0 :::8080                 :::*                    LISTEN      28345/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      28345/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      28345/java          
[root@localhost bin]# netstat -natp | grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      28345/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      28345/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      28345/java   

在这里插入图片描述

优化tomcat

[root@localhost conf]# ln -s /usr/local/tomcat9/bin/startup.sh /usr/bin/
[root@localhost conf]# ln -s /usr/local/tomcat9/bin/shutdown.sh /usr/bin/

主配置文件为server.xml

[root@localhost bin]# cd /usr/local/tomcat9/
[root@localhost tomcat9]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat9]# cd conf/
[root@localhost conf]# ls
Catalina         catalina.properties  jaspic-providers.xml  logging.properties  tomcat-users.xml  web.xml
catalina.policy  context.xml          jaspic-providers.xsd  server.xml          tomcat-users.xsd
[root@localhost conf]# pwd
/usr/local/tomcat9/conf
[root@localhost conf]# cd ..
[root@localhost tomcat9]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat9]# cd lib/
[root@localhost lib]# ls
annotations-api.jar       el-api.jar       tomcat-coyote.jar   tomcat-i18n-ko.jar     tomcat-util-scan.jar
catalina-ant.jar          jasper-el.jar    tomcat-dbcp.jar     tomcat-i18n-pt-BR.jar  tomcat-websocket.jar
catalina-ha.jar           jasper.jar       tomcat-i18n-cs.jar  tomcat-i18n-ru.jar     websocket-api.jar
catalina.jar              jaspic-api.jar   tomcat-i18n-de.jar  tomcat-i18n-zh-CN.jar
catalina-storeconfig.jar  jsp-api.jar      tomcat-i18n-es.jar  tomcat-jdbc.jar
catalina-tribes.jar       servlet-api.jar  tomcat-i18n-fr.jar  tomcat-jni.jar
ecj-4.9.jar               tomcat-api.jar   tomcat-i18n-ja.jar  tomcat-util.jar
[root@localhost lib]# 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        include         jre  LICENSE  README.html  src.zip                             THIRDPARTYLICENSEREADME.txt
COPYRIGHT  javafx-src.zip  lib  man      release      THIRDPARTYLICENSEREADME-JAVAFX.txt
[root@localhost jdk1.8.0_201-amd64]# cd jre/
[root@localhost jre]# ls
bin        lib      plugin  THIRDPARTYLICENSEREADME-JAVAFX.txt  Welcome.html
COPYRIGHT  LICENSE  README  THIRDPARTYLICENSEREADME.txt
[root@localhost jre]# cd lib/
[root@localhost lib]# ls
amd64                     fontconfig.bfc                      hijrah-config-umalqura.properties  management
applet                    fontconfig.properties.src           images                             management-agent.jar
calendars.properties      fontconfig.RedHat.5.bfc             javafx.properties                  meta-index
charsets.jar              fontconfig.RedHat.5.properties.src  javaws.jar                         net.properties
classlist                 fontconfig.RedHat.6.bfc             jce.jar                            oblique-fonts
cmm                       fontconfig.RedHat.6.properties.src  jexec                              plugin.jar
content-types.properties  fontconfig.SuSE.10.bfc              jfr                                psfontj2d.properties
currency.data             fontconfig.SuSE.10.properties.src   jfr.jar                            psfont.properties.ja
deploy                    fontconfig.SuSE.11.bfc              jfxswt.jar                         resources.jar
deploy.jar                fontconfig.SuSE.11.properties.src   jsse.jar                           rt.jar
desktop                   fontconfig.Turbo.bfc                jvm.hprof.txt                      security
ext                       fontconfig.Turbo.properties.src     locale                             sound.properties
flavormap.properties      fonts                               logging.properties                 tzdb.dat
[root@localhost lib]# cd security/
[root@localhost security]# ls
blacklist  blacklisted.certs  cacerts  java.policy  java.security  javaws.policy  policy  trusted.libraries
[root@localhost security]# vim java.security 
' 117 securerandom.source=file:/dev/urandom
//优化启动时间 
[root@localhost security]# shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
[root@localhost security]# startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.

八:Tomcat启动时间

  • 缩短启动时间的命令

  • 修改文件/usr/java/jdk1.8.0_171-amd64/jre/lib/security/java.security

  • [root@localhost security]# vim /usr/java/jdk1.8.0_171-amd64/jre/lib/security/java.security
    ' 117 securerandom.source=file:/dev/urandom
    //优化启动时间 
    

九:Tomcat目录结构

lib java的函数库,第三方组件包

jar,组件包

首页站点都在webapps

后面的class文件都可以直接拖进去

在这里插入图片描述

十:虚拟主机配置

  • 有多个项目同时运行时,一台服务器不建议运行多个Tomcat服务,需要配置虚拟主机
  • 通过两个域名访问到不同的项目内容

10.1步骤

10.1.1创建kgc和accp项目目录和文件

10.1.2修改Tomcat主配置文件

  • /usr/local/tomcat/conf/server.xml的部分

在这里插入图片描述

10.1.3重启Tomcat服务

在这里插入图片描述

如果使用脚本,/,就需要使用sleep休眠一下

10.1.4测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

域名 工作目录(不是站点) 是否更新服务器中的WAR包 是否自动部署,即时生效 是否支持xml文件验证 是否对xml的空间启用

context docbase 站点 path设定为空,代表加载默认列表 重载功能开启

在这里插入图片描述

10.2 实操演示

10.2.1 安装dns服务

[root@localhost ~]# yum install bind -y
[root@localhost ~]# vim /etc/named.conf 
 13         listen-on port 53 { any; };
 14         listen-on-v6 port 53 { ::1; };
 15         directory       "/var/named";
 16         dump-file       "/var/named/data/cache_dump.db";
 17         statistics-file "/var/named/data/named_stats.txt";
 18         memstatistics-file "/var/named/data/named_mem_stats.txt";
 19         recursing-file  "/var/named/data/named.recursing";
 20         secroots-file   "/var/named/data/named.secroots";
 21         allow-query     { any; };
[root@localhost ~]# vim /etc/named.rfc1912.zones 
        zone "kgc.com" IN {
                type master;
                file "kgc.com.zone";
                allow-update { none; };
        };

        zone "accp.com" IN {
                type master;
                file "accp.com.zone";
                allow-update { none; };
        };   
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
  dynamic         named.ca     named.localhost  slaves
data               named.empty  named.loopback
[root@localhost named]# cp -p named.localhost kgc.com.zone 
[root@localhost named]# vim kgc.com.zone 
[root@localhost named]# cat kgc.com.zone 
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www     IN      A       192.168.247.202
[root@localhost named]# cp -p kgc.com.zone accp.com.zone 
[root@localhost named]# 
[root@localhost named]# systemctl start named
[root@localhost named]# systemctl stop firewall
Failed to stop firewall.service: Unit firewall.service not loaded.
[root@localhost named]# setenforce 0        

10.2.2 开启客户机测试bind服务

在这里插入图片描述

在这里插入图片描述

10.2.3 先创建站点,创建两个站点,默认站点在ROOT中

[root@localhost ~]# cd /usr/local/
[root@localhost local]# ls
apache2  bin  etc  games  include  lib  lib64  libexec  nginx  sbin  share  src  tomcat9
[root@localhost local]# cd tomcat9/
[root@localhost tomcat9]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@localhost tomcat9]# cd webapps/
[root@localhost webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@localhost webapps]# 

创建两个站点,默认站点在ROOT中

[root@localhost webapps]# cd ROOT/
[root@localhost ROOT]# ls
asf-logo-wide.svg  bg-middle.png  bg-upper.png  index.jsp          tomcat.css  tomcat.png        tomcat.svg
bg-button.png      bg-nav.png     favicon.ico   RELEASE-NOTES.txt  tomcat.gif  tomcat-power.gif  WEB-INF
[root@localhost ROOT]# cd ..
[root@localhost webapps]# ls
docs  examples  host-manager  manager  ROOT
[root@localhost webapps]# mkdir kgc accp
[root@localhost webapps]# ls
accp  docs  examples  host-manager  kgc  manager  ROOT
[root@localhost webapps]# cd accp/
[root@localhost accp]# vim index.jsp
<h1>this is accptest</h1>
[root@localhost accp]# cd ../kgc/
[root@localhost kgc]# vim index.jsp
<h1>this is kgc</h1>

可以使用tree去查看这两个目录验证里面是否创建成功文件,没有这个命令的话就yum安装tree

[root@localhost webapps]# tree kgc/ accp/
kgc/
└── index.jsp
accp/
└── index.jsp

0 directories, 2 files

10.2.4 修改配置文件创建虚拟主机

[root@localhost kgc]# cd ../../conf
[root@localhost conf]# ls
Catalina         catalina.properties  jaspic-providers.xml  logging.properties  tomcat-users.xml  web.xml
catalina.policy  context.xml          jaspic-providers.xsd  server.xml          tomcat-users.xsd
[root@localhost conf]# vim server.xml 
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>

上面是默认存在的网站

166-172为增加内容

162                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
163 
164       </Host>
165 
166       <Host name="www.accp.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlVa    lidation="false" xmlNamespaceAware="false">
167         <Context docBase="/usr/local/tomcat9/webapps/accp" path="" reloadable="true"/>
168         </Host>
169 
170       <Host name="www.kgc.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlVal    idation="false" xmlNamespaceAware="false">
171         <Context docBase="/usr/local/tomcat9/webapps/kgc" path="" reloadable="true"/>
172         </Host>
173 
174     </Engine>
175   </Service>
176 </Server>

这是默认的网站

[root@localhost bin]# ./shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
[root@localhost bin]# startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.

10.2.5 验证

在这里插入图片描述

在这里插入图片描述

十一:TOMcat优化

  • 操作系统优化(内核参数优化)
  • Tomcat配置文件参数优化
  • Java虚拟机(JVM)调优

11.1 Tomcat配置文件参数优化

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

在这里插入图片描述

最大线程

最小空闲线程

最大空闲线程

字符集

连接超时

域名

关闭上传超时
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

如果https时,那么端口就会定义到8443

processorcache 缓存对象

[root@localhost ~]# vim /usr/local/tomcat9/conf/server.xml 
 69     <Connector port="8080" protocol="HTTP/1.1"
 70                connectionTimeout="20000"
 71                redirectPort="8443" />
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# 

对原有配置属性的进行压测

在客户端先安装jdk,配置环境变量,然后打开压测包

在这里插入图片描述

双击打开

在这里插入图片描述
找到指定文件,打开

在里面打开压测脚本,完成之后会生成压测报告,把压测报告保存表格数据(在聚合报告的下面保存),然后查看

在这里插入图片描述

在这里插入图片描述

多试几次

在这里插入图片描述

整理

在这里插入图片描述

接下来进行优化

[root@localhost ~]# vim /usr/local/tomcat9/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"
compresssion="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png"/>

重启服务

[root@localhost ~]# shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
[root@localhost ~]# startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME:   /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH:       /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# netstat -natp | grep 80
tcp6       0      0 :::8080                 :::*                    LISTEN      109429/java         
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      109429/java         
tcp6       0      0 :::8009                 :::*                    LISTEN      109429/java         
tcp6       0      0 ::1:43008               ::1:8080                TIME_WAIT   -                   
tcp6       0      0 127.0.0.1:35988         127.0.0.1:8005          TIME_WAIT   -                   
tcp6       0      0 ::1:59856               ::1:8009                TIME_WAIT   -                  

再次测试

在这里插入图片描述
平均值降低了

十二:Tomcat官方文档

  • 阅读官方文档,可以深入学习tomcat配置参数相关知识
    • http://tomcat.apache.org/tomcat-9.0-doc/config/http.html

在这里插入图片描述

十三:jmeter压测工具

13.1 步骤

1.从oracle官方下载jdk安装包,在客户端安装jdk

2.运行jmeter软件

在这里插入图片描述

3.选择压测脚本

在这里插入图片描述

4.开始进行压测

5.查看优化前压测结果

在这里插入图片描述

十四:Tomcat优化参数

  • server.xml配置参数
  • 原始:

在这里插入图片描述

  • 修改后的:

在这里插入图片描述

超时时间的单位是毫秒

compression是压缩

压缩最小阈值,

  • 聚合报告

在这里插入图片描述

十五:Tomcat优化步骤

  • server.xml 配置参数
  • 重启Tomcat服务器
  • 查看优化后的聚合报告
  • 从测试结果看,优化后的平均值和90%响应时间比优化前要快

十六:Java 虚拟机(JVM)调优

  • Tomcat启动命令行中的优化参数
  • 正确选择不同的GC策略,调整JVM、GC的参数,可以极大的减少因GC工作而导致的程序运行中断的问题

GC就是垃圾回收机制

16.1 JVM参数

  • ${JAVA_HOME}/bin目录下catalina.sh文件
  • Java_OPTS设置JVM相关运行参数的变量

在这里插入图片描述

这个是对内存的堆和栈的优化

java的变量分为值类型和引用类型

16.2 Java垃圾回收机制

  • 堆大小决定了虚拟机花费在收集垃圾上的时间和频度

在这里插入图片描述

堆区相当于仓库,栈相当于展架,废弃物交给GC

堆和栈都在内存中

本地方法库是管理方法

  • 堆大小决定了虚拟机花费在收集垃圾上的时间和频度

  • 调整堆大小的目的是最小化垃圾收集的时间,在特定的时间内最大化处理客户的请求

  • 在基准测试的时候,为确保最好的性能,要把堆的大小设大,确保垃圾收集不在整个基准测试的过程中出现

  • 常见的优化GC参数 ————/usr/local/tomcat/bin/catalina.sh

在这里插入图片描述

十七:JVM常见错误

17.1 常见错误之JVM Heap (堆)溢出

  • java.lang.OutOfMemoryError: Java heap space
  • JVM启动时,自动设置JVM Heap的值
    • 初始空间(-Xms)是物理内存的1/64
    • 最大空间(-Xmx)不可超过物理内存
  • 如果98%时间用于GC,且可用的Heap size不足2%,JVM将抛出此异常————java不会像linux中有临时交换空间用以临时存放
  • 解决方法
    • 手动设置JVM Heap (堆)的大小

17.2PermGen space 溢出

  • java.lang.OutOfMemoryError:PermGen space————Permanent Generation space,内存的永久保存区域
  • 内存主要存放Class和Meta信息
    • Class在被Load时被放入PerGen space区域,而sun的GC不会再主程序运行期对PerGen space进行清理
  • 如果APP载入很多CLASS,就可能出现PermGen space 溢出
  • 解决方法
    • 手动设置 MaxPermSize大小

17.3栈溢出

  • jiva.lang.StackOverflowError
  • JVM是采用栈式的虚拟机,函数调用过程是堆栈的操作
    • 通常栈的大小是1-2MB的
  • 函数的“层”若是太多,会造成栈区溢出
  • 解决办法
    • 修改程序,减少函数的“层数“
发布了87 篇原创文章 · 获赞 26 · 访问量 4525

猜你喜欢

转载自blog.csdn.net/Lfwthotpt/article/details/103798591