当前位置: 首页 > java >正文

麒麟系统下Tomcat部署Java Web程序(WAR包)及全链路问题排查指南

在这里插入图片描述

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用,熟悉DICOM医学影像及DICOM协议,业余时间自学JavaScript,Vue,qt,python等,具备多种混合语言开发能力。撰写博客分享知识,致力于帮助编程爱好者共同进步。欢迎关注、交流及合作,提供技术支持与解决方案。
技术合作请加本人wx(注明来自csdn):xt20160813

在这里插入图片描述

麒麟系统下Tomcat部署Java Web程序(WAR包)及全链路问题排查指南


一、环境准备与系统配置

1. 系统环境要求

• 操作系统:银河麒麟V10(基于Linux 4.19.90内核),需确认系统架构为x86_64或aarch64

• Java环境:

# 安装OpenJDK 1.8
sudo yum install java-1.8.0-openjdk
# 验证路径
echo $JAVA_HOME  # 应为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-10.ky10.x86_64

• Tomcat版本:推荐Apache Tomcat 9.0.100(需兼容ARM架构的麒麟系统)

2. Tomcat安装与配置

# 下载并解压
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.100/bin/apache-tomcat-9.0.100.tar.gz
tar -zxvf apache-tomcat-9.0.100.tar.gz -C /usr/local/# 配置环境变量(编辑/etc/profile)
export CATALINA_HOME=/usr/local/apache-tomcat-9.0.100
export PATH=$PATH:$CATALINA_HOME/bin# 创建专用用户并授权
sudo useradd -M -s /sbin/nologin tomcat
sudo chown -R tomcat:tomcat $CATALINA_HOME

二、WAR包部署全流程

1. 基础部署步骤

# 停止Tomcat服务
$CATALINA_HOME/bin/shutdown.sh# 上传WAR包至webapps目录
cp demo-web.war $CATALINA_HOME/webapps/# 启动服务(后台运行)
nohup $CATALINA_HOME/bin/startup.sh &# 验证部署
curl http://localhost:8080/demo-web/healthcheck

2. 高级配置选项

• 自定义上下文路径(避免URL带项目名):

<!-- 修改$CATALINA_HOME/conf/server.xml -->
<Context path="/api" docBase="demo-web" reloadable="false"/>

• 多实例部署(解决端口冲突):

cp -r $CATALINA_HOME /opt/tomcat-instance2
sed -i 's/8080/8081/g' /opt/tomcat-instance2/conf/server.xml

三、服务管理与监控

1. Systemd服务配置

# 创建服务文件
sudo nano /etc/systemd/system/tomcat.service# 内容示例
[Unit]
Description=Apache Tomcat 9
After=syslog.target network.target[Service]
User=tomcat
Group=tomcat
Environment="CATALINA_OPTS=-Xms2G -Xmx4G"
ExecStart=$CATALINA_HOME/bin/catalina.sh run
Restart=on-failure[Install]
WantedBy=multi-user.target# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable tomcat

2. 常用管理命令

systemctl status tomcat    # 查看状态
journalctl -u tomcat -f    # 实时追踪日志
ss -tulnp | grep java      # 检查端口占用

3、Tomcat服务管理与监控

1. systemctl服务管理命令

在麒麟系统中,若已将Tomcat配置为Systemd服务(参考),可通过以下命令管理:

# 查看服务状态(检查是否运行、端口监听等)
systemctl status tomcat# 重启服务(适用于配置修改后)
systemctl restart tomcat# 停止服务(释放端口资源)
systemctl stop tomcat# 启动服务(部署新应用或故障恢复后)
systemctl start tomcat# 设置开机自启
systemctl enable tomcat
2. 服务状态解读

• Active: active (running):服务正常。

• Active: failed:启动失败,需检查日志(journalctl -u tomcat)。

• 端口占用:若提示Address already in use,使用 ss -tunlp | grep 8080 查找占用进程并终止。


四、高频问题排查手册

1. 端口冲突处理

• 查找占用进程:

sudo lsof -i :8080       # 显示PID和进程名
sudo netstat -tulnp | grep 8080

• 解决方案:

• 终止进程:kill -9 <PID>

• 修改Tomcat端口:

```xml
<!-- 修改$CATALINA_HOME/conf/server.xml -->
<Connector port="9090" protocol="HTTP/1.1"/>
```

2. 权限问题修复

sudo mkdir -p /data/dicom
sudo semanage fcontext -a -t tomcat_log_t "/data/dicom(/.*)?"
sudo restorecon -Rv /data/dicom

3. 数据库连接异常

• 排查步骤:

  1. 检查application.properties的JDBC URL格式:
    spring.datasource.url=jdbc:postgresql://localhost:5432/dicomai
    
  2. 验证PostgreSQL服务状态:
    systemctl status postgresql
    pg_isready -h localhost -p 5432
    
  3. 防火墙放行:
    sudo firewall-cmd --add-port=5432/tcp --permanent
    

五、性能优化与安全加固

1. JVM调优参数

# 修改$CATALINA_HOME/bin/setenv.sh
export JAVA_OPTS="-Xms4G -Xmx8G -XX:+UseG1GC -XX:MaxGCPauseMillis=200"

2. 连接池配置(Druid示例)

spring.datasource.druid.max-active=100
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL

3. 安全策略

• 禁用管理界面:

rm -rf $CATALINA_HOME/webapps/{manager,host-manager}

• 启用HTTPS:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"SSLEnabled="true" keystoreFile="/etc/ssl/tomcat.keystore"/>

六、日志分析与监控体系

1. 关键日志路径

日志类型路径功能说明
启动日志$CATALINA_HOME/logs/catalina.out记录启动过程及严重错误
应用日志/data/dicom/log-all.log业务逻辑错误追踪
访问日志$CATALINA_HOME/logs/localhost_access_logHTTP请求分析

2. 日志分析技巧

• 实时监控:

tail -f catalina.out | grep -E 'ERROR|WARN'

• 内存泄漏分析:

jmap -dump:format=b,file=heapdump.hprof <PID>

3. ELK日志集成

# Logstash配置示例
input {file {path => "/usr/local/tomcat/logs/*.log"start_position => "beginning"}
}
filter {grok {match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{DATA:message}" }}
}

七、附录:快速排障速查表

现象排查命令/操作解决方案
服务无法启动journalctl -u tomcat --since "2025-05-13"检查端口冲突、权限问题或JVM配置错误
静态资源404ls -l $CATALINA_HOME/webapps/demo-web/static/检查WAR包解压完整性,设置spring.resources.static-locations
CPU持续100%top -H -p <PID> + jstack <PID> > thread_dump.log分析线程死锁,优化代码逻辑或调整线程池参数
数据库连接超时telnet <DB_IP> 5432 + sudo tcpdump -i eth0 port 5432 -nn -v检查网络策略、连接池配置或数据库负载
日志文件不滚动ls -lh /data/dicom/log-all.log检查Logback配置的RollingPolicy,设置<maxHistory>30</maxHistory>

参考文献

银河麒麟V10安装Tomcat
麒麟系统Tomcat环境变量配置
Tomcat多实例部署与端口管理
Systemd服务配置与开机自启
HTTPS安全配置指南
ELK日志集中化方案
JVM内存泄漏排查方法
Tomcat端口占用速查手册

通过本指南,您可系统掌握麒麟系统下Tomcat的全生命周期管理,涵盖部署、监控、排障与优化全流程。遇到未覆盖的异常时,建议结合 catalina.out 日志深度分析或查阅官方文档。

http://www.xdnf.cn/news/6320.html

相关文章:

  • R语言的专业网站top5推荐
  • recvfrom和sendto函数中地址参数的作用
  • Redis学习打卡-Day2-缓存更新策略、主动更新策略、缓存穿透、缓存雪崩、缓存击穿
  • Cocos Creator 3.8.5 构建依赖环境配置文档
  • 从零开始创建一个 Next.js 项目并实现一个 TodoList 示例
  • 计算机网络八股
  • Reactor模型详解与C++实现
  • 云原生数据库排障新挑战:AI驱动与分布式架构深度解析
  • 什么是抖动以及如何使用抖动缓冲区来减少抖动?
  • 深度解析IP静态的工作原理,IP静态的应用场景又哪些?
  • 实现可靠的 WebSocket 连接:心跳与自动重连的最佳实践
  • [c语言日寄]数据结构:栈
  • CSS AI 通义灵码 VSCode插件安装与功能详解
  • SSM项目集成redis、Linux服务器安装redis
  • 在vs code 中无法运行npm并报无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查
  • 【Java ee】关于抓包软件Fiddler Classic的安装与使用
  • 【day01】 Chroma 核心操作流程
  • 基于互联网和LabVIEW的多通道数据采集系统仿真设计
  • Ruby 循环与迭代器
  • 趣味编程:钟表
  • 阿里巴巴 1688 数据接口开发指南:构建自动化商品详情采集系统
  • React 轻量级富文本编辑器推荐(中文版)
  • 左手坐标系、右手坐标系、坐标轴方向
  • 每日Prompt:磨砂玻璃后的虚实对比剪影
  • k8s 1.10.26 一次containerd失败引发kubectl不可用问题
  • Java 开源报表系统全解析:免费工具、企业案例与集成实践
  • 图形语言中间层:重构 AI 编程的未来之路
  • 大语言模型三大演进方向:记忆增强、工具集成与多模态突破
  • 数据结构——例题3
  • Java对象的GC回收年龄的研究