You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

6.7 KiB

Spring Boot应用部署到Tomcat 10.1.48指南(含性能优化)

准备工作

  1. 确认构建产物

    • 已生成WAR文件:web-0.0.1-SNAPSHOT.war,位于target目录下
    • 确认包含最新性能优化:SQL查询优化、分页功能、二级缓存配置
  2. Tomcat环境要求

    • Tomcat版本:10.1.48(Jakarta EE 10兼容)
    • JDK版本:17或更高(与项目pom.xml中配置的Java版本一致)
    • 数据库:需创建优化索引(详见数据库索引优化部分)

部署步骤

1. 准备部署文件

# 将WAR文件重命名为DL.war(与context-path一致)
# 注意:在Windows命令提示符中使用
copy target\web-0.0.1-SNAPSHOT.war target\DL.war

# 或者在PowerShell中使用
# Copy-Item -Path "target\web-0.0.1-SNAPSHOT.war" -Destination "target\DL.war"

# 在Linux/Mac终端中使用(注意转义括号)
# cp d:\java\project\web\(8)\web\target\web-0.0.1-SNAPSHOT.war d:\java\project\web\(8)\web\target\DL.war
# 或者使用相对路径避免路径转义问题
# cd d:\java\project\web(8)\web && cp target\web-0.0.1-SNAPSHOT.war target\DL.war

2. 上传WAR文件到服务器

使用SFTP或SCP工具将DL.war文件上传到服务器的Tomcat目录:

# 示例:使用scp上传(注意处理路径中的括号)
# 方法1:转义括号
scp d:\java\project\web\(8)\web\target\DL.war user@your-server:/opt/tomcat/webapps/

# 方法2:使用相对路径(推荐)
cd d:\java\project\web(8)\web
scp target\DL.war user@your-server:/opt/tomcat/webapps/

# 方法3:使用引号包裹路径(在某些终端中有效)
scp "d:\java\project\web(8)\web\target\DL.war" user@your-server:/opt/tomcat/webapps/

3. 确保Tomcat目录权限正确

# 登录服务器后执行
cd /opt/tomcat
# 确保tomcat用户对webapps目录有写权限
chown -R tomcat:tomcat webapps/
chmod -R 755 webapps/

4. 配置Tomcat(可选但推荐)

4.1 配置context.xml(解决可能的内存泄漏问题)

编辑/opt/tomcat/conf/context.xml文件,添加以下配置:

<Context antiResourceLocking="true" antiJARLocking="true">
    <!-- 现有配置保持不变 -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>

4.2 调整Tomcat内存配置

编辑/opt/tomcat/bin/setenv.sh(如果不存在则创建):

#!/bin/bash
# 为Tomcat设置适当的内存
JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m"
# 添加Tomcat 10兼容性参数
JAVA_OPTS="$JAVA_OPTS --add-opens=java.base/java.lang=ALL-UNNAMED"

给脚本添加执行权限:

chmod +x /opt/tomcat/bin/setenv.sh

5. 启动或重启Tomcat

# 切换到Tomcat的bin目录
cd /opt/tomcat/bin

# 停止Tomcat(如果正在运行)
./shutdown.sh

# 等待Tomcat完全停止(约30秒)

# 启动Tomcat
./startup.sh

6. 验证部署

  1. 检查Tomcat日志

    tail -f /opt/tomcat/logs/catalina.out
    
  2. 访问应用

    • 应用应该可以通过以下URL访问:http://your-server-ip:8080/DL
    • 登录页面:http://your-server-ip:8080/DL/loginmm.html

常见问题排查

1. 端口冲突

如果Tomcat的8080端口已被占用,修改/opt/tomcat/conf/server.xml中的端口配置:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

2. 数据库连接问题

确保数据库服务器允许来自Tomcat服务器IP的连接。检查应用配置中的数据库连接URL是否正确。

3. 类加载问题(Tomcat 10特有)

Tomcat 10使用Jakarta EE,所有javax.*包已改为jakarta.*。如果出现类找不到的错误:

  • 检查是否有冲突的JAR包在WEB-INF/lib中
  • 确保使用的是支持Jakarta EE的依赖版本

4. 内存溢出

如果出现内存溢出错误,增加Tomcat的内存分配,修改setenv.sh文件:

JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxPermSize=512m"

数据库索引优化(重要)

在部署新版本前,请在数据库服务器上执行以下索引创建脚本,以提升查询性能:

-- 执行CREATE_OPTIMIZATION_INDEXES.sql文件中的脚本
-- 在服务器上执行:
source /path/to/CREATE_OPTIMIZATION_INDEXES.sql

-- 或直接复制脚本内容执行

-- 1. 为managers表创建索引
CREATE INDEX idx_managers_enterprise_id ON managers(enterprise_id);
CREATE INDEX idx_managers_user_name ON managers(user_name);

-- 2. 为users表创建索引
CREATE INDEX idx_users_user_id ON users(user_id);
CREATE INDEX idx_users_user_name ON users(user_name);
CREATE INDEX idx_users_status ON users(status);

-- 3. 为usermanagements表创建索引
CREATE INDEX idx_usermanagements_user_id ON usermanagements(user_id);
CREATE INDEX idx_usermanagements_role_id ON usermanagements(role_id);
CREATE INDEX idx_usermanagements_permission_level ON usermanagements(permission_level);

应用更新流程

  1. 执行数据库索引优化:按照上方数据库索引优化部分执行索引创建脚本
  2. 停止Tomcat./shutdown.sh
  3. 备份旧数据cp -r /opt/tomcat/webapps/DL /path/to/backup/
  4. 删除旧的WAR文件和解压目录rm -rf /opt/tomcat/webapps/DL*
  5. 上传新的WAR文件
  6. 启动Tomcat./startup.sh
  7. 监控日志确认部署成功tail -f /opt/tomcat/logs/catalina.out

性能优化验证

部署完成后,请执行以下验证步骤确认性能优化效果:

  1. 验证分页功能

    • 访问负责人管理页面,确认列表显示已启用分页
    • 验证翻页功能正常,数据加载速度提升
  2. 验证SQL查询性能

    • 执行常用查询操作,确认响应时间明显改善
    • 监控数据库慢查询日志,检查是否有新的慢查询
  3. 验证缓存效果

    • 连续访问相同数据页面,确认第二次访问速度更快

回滚方案

如遇部署问题,请按以下步骤回滚:

  1. 停止Tomcat:./shutdown.sh
  2. 删除新部署文件:rm -rf /opt/tomcat/webapps/DL*
  3. 恢复备份:cp -r /path/to/backup/DL /opt/tomcat/webapps/
  4. 恢复数据库索引(如需要)
  5. 启动Tomcat:./startup.sh

注意事项

  1. 备份:部署前请备份现有应用数据和配置
  2. 维护窗口:选择低流量时段进行部署
  3. 监控:部署后密切监控应用性能和日志
  4. 权限:确保Tomcat用户对所有必要目录有正确权限
  5. 性能监控:部署后持续监控系统性能指标,必要时进行进一步优化
  6. 索引维护:定期检查数据库索引使用情况和碎片

部署时间:2024 版本:2.0(包含性能优化)


详细性能优化说明请参考:PERFORMANCE_OPTIMIZATION_GUIDE.md