Tomcat服务配置与性能优化
Tomcat服务配置与性能优化
第1章 概述
1-1 课程介绍
- Tomcat 概述以及运行原理
- Tomcat 环境搭建
- Tomcat 配置详情
- Tomcat 单点登录
- Tomcat 多域名访问
- Tomcat 性能调优
1-2 ~ 1-4概念和原理
Tomcat 简介
- Apache软件基金会
- 开源软件 Tomcat是一个开源的Servlet容器和Web服务器
- 中小型应用服务器
Tomcat原理
- Connector核心组件
- 接受客户端连接
- 加工处理客户端请求
- Container核心组件
- 所有的子容器的父接口
- 责任链设计模式
- 处理请求的核心组件
- 其他
第2章 Tomcat环境安装
2-1 Tomcat Windows 环境安装
Windows 搭建运行基础环境(JDK 1.8)
- Java JDK8 官方下载 Tips:JDK1.8 等于 JDK8
- 现阶段 Windows 电脑默认直接选择64位安装包
JDK8
->Windows
->x64 Installer(jdk-8u441-windows-x64.exe)
下载后直接安装即可 - 安装好测试JDK环境是否安装成功
1
2# 检查java环境变量是否配置成功
java -version - 如果没有配置不成功,则去配置环境变量
- 右键计算机->属性->高级系统设置->环境变量->系统变量->新建
- 变量名:JAVA_HOME
- 变量值:JDK 安装目录(如:C:\Program Files\Java\jdk1.8.0_441)
- 在系统变量中找到 Path 变量,点击编辑,在变量值最后添加:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
;- 注意:变量值之间用分号隔开,添加时注意不要删除原有的变量值
- 右键计算机->属性->高级系统设置->环境变量->系统变量->新建
Windows 安装 Tomcat 9 服务器
- Tomcat9 官方下载
- 现阶段 Windows 电脑默认直接选择64位安装包
Core
->64-bit Windows zip
下载后直接解压即可 - 解压后,进入bin目录,双击
startup.bat
文件即可启动 Tomcat 服务器 - 启动后日志出现乱码:由于 Tomcat 默认使用的编码是
UTF-8
,而中国国内的系统默认简体中文是GB2312
,所以会出现乱码- 解决方法:在
conf
目录下找到logging.properties
文件,修改以下代码1
# 查找批量修改 UTF-8 替换成 GB2312
- 解决方法:在
2-2 Tomcat Linux 环境安装
Linux 搭建运行基础环境(JDK 1.8)
- Java JDK8 官方下载 Tips:JDK1.8 等于 JDK8
- 现阶段 Linux 电脑默认直接选择64位安装包
JDK8
->Linux
->jdk-8u441-linux-x64.tar.gz
下载后直接解压即可1
2
3
4
5
6# 创建 java 目录
mkdir /usr/local/java
# 进入 java 目录
cd /usr/local/java
# 解压 JDK 压缩包
tar -zxvf jdk-8u441-linux-x64.tar.gz - 解压成功后则去配置环境变量
- 编辑
/etc/profile
文件,在最下面添加以下代码 Tips:这里下面的代码跟原视频有点出入 少了花括号,如有问题可以看原视频1
2
3
4
5# 配置 JAVA_HOME 和 CLASSPATH 环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_441
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin - 使配置生效:
1
source /etc/profile
- 编辑
- 安装好测试 JDK 环境是否安装成功
1
2# 检查java环境变量是否配置成功
java -version
Linux 安装 Tomcat 9 服务器
- Tomcat9 官方下载
- 现阶段 Linux 电脑默认直接选择64位安装包
Core
->tar.gz
下载后直接解压即可1
2
3
4
5
6# 创建 tomcat 目录
mkdir /usr/local/tomcat
# 进入 java 目录
cd /usr/local/tomcat
# 解压 JDK 压缩包
tar -zxvf apache-tomcat-9.0.1.tar.gz - 解压后,进入bin目录,双击
./startup.sh
文件即可启动 Tomcat 服务器1
2
3
4
5
6
7
8
9
10
11
12
13# 进入 /usr/local/tomcat/bin 目录
cd /usr/local/tomcat/bin
# 启动 Tomcat
./startup.sh
# 进入 /usr/local/tomcat/logs 目录
cd /usr/local/tomcat/logs
# 查看 Tomcat 启动日志
tail -f catalina.out
# 确认启动成功后可以 访问 ip地址:8080 端口
# 查看 Tomcat 进程
ps -ef | grep tomcat
# 进入 /usr/local/tomcat/bin 目录 关闭 Tomcat 进程
/usr/local/tomcat/bin/shutdown.sh
2-x Tomcat 目录结构解释
- bin:存放启动和关闭 Tomcat 的脚本文件
- conf:Tomcat 的配置文件目录
- lib:Tomcat 运行所需要的 jar 包
- logs:Tomcat 日志目录
- webapps:Tomcat 部署应用的目录
- work:Tomcat 工作目录,存放编译后的 JSP 文件
- temp:Tomcat 临时文件目录
2-x Linux 云服务器可以直接安装宝塔进行安装 比较简单
第三章 Tomcat常用配置项修改
3-1 修改 tomcat 端口号
- 端口范围:
0-65535
- Linux 修改
/usr/local/tomcat/conf/server.xml
文件1
2
3<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" /> - Windows 修改
C:\Program Files\apache-tomcat-9.0.1\conf\server.xml
文件1
2
3<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" /> - 修改端口号后,重启 Tomcat 服务器
3-2 修改内存
- Tomcat 默认内存大小为 512MB
- Linux 修改
/usr/local/tomcat/bin/catalina.sh
文件1
2# 设置最大内存为 1024MB
export CATALINA_OPTS="-Xms1024m -Xmx1024m" - Windows 修改
C:\Program Files\apache-tomcat-9.0.1\bin\catalina.bat
文件1
2# 设置最大内存为 1024MB
set CATALINA_OPTS=-Xms1024m -Xmx1024m - 修改内存后,重启 Tomcat 服务器
内存模型
- 堆内存:存放对象实例和数组
- 栈内存:存放局部变量和方法调用
- 静态内存:存放静态变量和方法
- 本地内存:存放本地方法的变量和方法
内存溢出
OutOfMemoryError: Java heap space
异常:表示 Java 堆内存溢出,解决方法是增加堆内存的大小- 解决方法:增加 JVM 的最大内存限制
- 例如:设置最大内存为 1024MB,最小内存为 512MB
- -Xms512m:设置最小内存为 512MB
- -Xmx1024m:设置最大内存为 1024MB
OutOfMemoryError: PermGen space
异常:表示方法区内存溢出,解决方法是增加 PermGen 空间的大小- -XX:PermSize=128m:设置初始大小为 128MB
- -XX:MaxPermSize=256m:设置最大大小为 256MB
- 例如:设置 PermGen 空间的初始大小为 128MB,最大大小为 256MB
1
2
3
4
5# Linux 修改 /usr/local/tomcat/bin/catalina.sh 文件
export CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m"
# Windows 修改 C:\Program Files\apache-tomcat-9.0.1\bin\catalina.bat 文件
set CATALINA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m
OutOfMemoryError: GC overhead limit exceeded
异常:表示垃圾回收器工作过于频繁,导致应用程序无法正常运行,解决方法是增加堆内存的大小- 解决方法:增加 JVM 的最大内存限制
- 例如:设置最大内存为 2048MB,最小内存为 1024MB
- -Xms1024m:设置最小内存为 1024MB
- -Xmx2048m:设置最大内存为 2048MB
OutOfMemoryError: Unable to create new native thread
异常:表示系统无法创建新的线程,解决方法是增加系统的最大线程数- 解决方法:增加系统的最大线程数
- 例如:设置最大线程数为 2000
1
2
3
4
5# Linux 修改 /etc/security/limits.conf 文件
* soft nproc 2000
* hard nproc 2000
# Windows 修改注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\MaxMpxCt 的值为 2000
OutOfMemoryError: Requested array size exceeds VM limit
异常:表示请求的数组大小超过了 JVM 的限制,解决方法是增加 JVM 的最大内存限制- 解决方法:增加 JVM 的最大内存限制
- 例如:设置最大内存为 4096MB,最小内存为 2048MB
- -Xms2048m:设置最小内存为 2048MB
- -Xmx4096m:设置最大内存为 4096MB
StackOverflowError
异常:表示栈内存溢出,解决方法是增加栈内存的大小- 解决方法:增加 JVM 的栈内存限制
- 例如:设置栈内存为 1024KB
1
2
3
4
5# Linux 修改 /usr/local/tomcat/bin/catalina.sh 文件
export CATALINA_OPTS="-Xss1024k"
# Windows 修改 C:\Program Files\apache-tomcat-9.0.1\bin\catalina.bat 文件
set CATALINA_OPTS=-Xss1024k
3-3 热部署
- Tomcat 支持热部署,即在不重启服务器的情况下,更新应用程序的代码和配置文件
- 热部署的原理是:Tomcat 会监控应用程序的代码和配置文件的变化,当发现变化时,会自动重新加载应用程序
- 热部署的优点是:可以快速更新应用程序,减少停机时间
- 热部署的缺点是:可能会导致内存泄漏和性能下降
- 热部署的实现方式有两种:
- 通过修改
conf/context.xml
文件中的reloadable
属性来实现热部署1
<Context reloadable="true" />
- 通过修改
conf/web.xml
文件中的reloadable
属性来实现热部署1
<web-app reloadable="true" />
- 通过在
conf/server.xml
文件中Host
标签 添加Context
标签和属性reloadable="true"
来实现热部署1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context reloadable="true" />
<!-- debug 日志级别 -->
<!-- path 项目路径 -->
<!-- docBase 项目目录或者 WAR 包 -->
<!-- reloadable 是否启动热部署 默认false -->
<!-- unpackWARs 是否解压 WAR 包 -->
<!-- autoDeploy 是否自动部署 -->
<!-- workDir 工作目录 -->
<!-- tempDir 临时目录 -->
<!-- logsDir 日志目录 -->
<!-- 或者指定单个项目目录 -->
<!-- 这里的 docBase属性的myapp是目录或者 加war/jar包会自动根据path访问名在webapps下面编译成目录 -->
<!-- 测试过单单目录名不能自动识别为 war/jar 包 -->
<!-- war (Web Application Archive) Web应用程序 -->
<!-- jar (Java Archive) Java归档文件 -->
<!-- jar包是一个压缩文件,war包是一个web应用程序的压缩文件,war包可以直接部署到web服务器上 -->
<!-- 测试完 目录和war包 才能直接在浏览器进行访问 jar包不行 -->
<!-- war/jar 包相当是一个固定的版本, 解压出来后的目录文件可以修改生效,怎么修改都不会影响原来的包文件 -->
<!-- 原视频中的演示 myapp会自动识别为 目录或者war/jar包 实际测试不行,不知道为什么 -->
<Context debug="0" path="/myapp" docBase="/usr/local/tomcat/webapps/myapp" reloadable="true" />
<!-- 或者指定单个项目 WAR 包 -->
<Context path="/myapp" docBase="/usr/local/tomcat/webapps/myapp.war" reloadable="true" />
<!-- 或者指定单个项目目录和 WAR 包 -->
<Context path="/myapp" docBase="/usr/local/tomcat/webapps/myapp.war" reloadable="true" unpackWARs="true" autoDeploy="true" />
<!-- 或者指定单个项目目录和 WAR 包和解压目录 -->
<Context path="/myapp" docBase="/usr/local/tomcat/webapps/myapp.war" reloadable="true" unpackWARs="true" autoDeploy="true" workDir="/usr/local/tomcat/work/myapp" />
<!-- 或者指定单个项目目录和 WAR 包和解压目录和临时目录 -->
<Context path="/myapp" docBase="/usr/local/tomcat/webapps/myapp.war" reloadable="true" unpackWARs="true" autoDeploy="true" workDir="/usr/local/tomcat/work/myapp" tempDir="/usr/local/tomcat/temp/myapp" />
<!-- 或者指定单个项目目录和 WAR 包和解压目录和临时目录和日志目录 -->
<Context path="/myapp" docBase="/usr/local/tomcat/webapps/myapp.war" reloadable="true" unpackWARs="true" autoDeploy="true" workDir="/usr/local/tomcat/work/myapp" tempDir="/usr/local/tomcat/temp/myapp" logsDir="/usr/local/tomcat/logs/myapp" />
<!-- 或者指定单个项目目录和 WAR 包和解压目录和临时目录和日志目录和配置文件 -->
</Host> - 通过在
conf\Catalina\localhost
创建xml
文件 一对一管理项目配置 来实现热部署 【推荐使用】- 例如:创建
myapp.xml
文件,这个文件的文件名就是访问路径,下面的内容不能添加访问路径,内容如下1
2
3<!-- <?xml 测试过这一行可以去掉, 主要是定义字符编码 -->
<Context reloadable="true" docBase="/usr/local/tomcat/webapps/myapp" />
- 例如:创建
- 通过修改
- 热部署的注意事项:
- 热部署只支持 JSP 文件的热部署,不支持 Java 类文件的热部署
- 热部署可能会导致内存泄漏和性能下降,建议在开发环境中使用,在生产环境中使用时要谨慎
- 热部署可能会导致应用程序的状态不一致,建议在更新应用程序之前备份应用程序的状态
- 热部署可能会导致应用程序的性能下降,建议在更新应用程序之后进行性能测试
3-4 数据库连接池与数据源
- 数据库连接池:是一个管理数据库连接的对象池,用于提高数据库连接的性能和效率
- 数据源:是一个提供数据库连接的对象,用于简化数据库连接的管理和使用
- JDBC操作数据库的步骤:
- 加载数据库驱动
- 创建数据库连接
- 创建数据库操作对象
- 执行数据库操作
- 关闭数据库连接
- JDBC操作数据库的代码示例:
1
2
3// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
3-5 实在是看不下去,看不懂这块
第4章 web管理
Tomcat 实现web管理
- 管理界面功能简述
- 使用tomcat管理界面发布项目
第5章 Tomcat单点登录
- 什么是单点登录
- 单点登录(Single Sign On),简称为 SSO,是一种身份验证过程,允许用户在多个应用程序中使用同一组凭据进行身份验证。
- 目前比较流行的企业业务整合的解决方案之一。单点登录协议有 OAuth、SAML 和 OpenID Connect。
- Tomcat单点登录的实现原理
- 单点登录的应用场景
- 如何配置Tomcat单点登录
- CAS 认证 看视频,这段也是看不懂
多域名访问
- 看视频吧
第6章 Tomcat安全配置
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 DXing Blog!
评论