1. 首页 > WebSphere教程 > 正文

WebSphere教程FG025-WebSphere常见故障解决实战

WebSphere教程FG025-WebSphere常见故障(启动失败、应用异常)解决实战

本文档风哥主要介绍WebSphere Application Server 9.0.5的常见故障处理,包括启动失败、应用异常、性能问题等内容,风哥教程参考WebSphere官方文档故障排除章节,适合WebSphere管理员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 故障分类概述

WebSphere故障可以分为多种类型,了解故障分类有助于快速定位问题。学习交流加群风哥微信: itpux-com

故障类型:

  • 启动故障:服务器无法启动或启动失败
  • 应用故障:应用部署失败或运行异常
  • 性能故障:系统响应慢或资源耗尽
  • 网络故障:网络连接问题

1.1.1 故障分类详解

# WebSphere故障分类

1. 启动故障
故障类型 症状 常见原因
──────────────────────────────────────────────────────
服务器启动失败 无法启动 端口冲突、配置错误
Profile损坏 启动报错 配置文件损坏
许可证问题 启动被阻止 许可证过期
权限问题 启动失败 文件权限错误

2. 应用故障
故障类型 症状 常见原因
──────────────────────────────────────────────────────
应用部署失败 部署报错 EAR/WAR格式错误
应用启动失败 应用无法启动 依赖缺失、配置错误
应用运行异常 功能异常 代码错误、资源问题
应用崩溃 应用停止 内存溢出、异常未处理

3. 性能故障
故障类型 症状 常见原因
──────────────────────────────────────────────────────
响应慢 请求响应时间长 资源不足、代码效率低
内存溢出 OutOfMemoryError 内存泄漏、堆内存不足
CPU高 CPU使用率高 线程死循环、计算密集
连接池耗尽 无法获取连接 连接泄漏、并发过高

4. 网络故障
故障类型 症状 常见原因
──────────────────────────────────────────────────────
连接超时 连接失败 网络不通、防火墙阻止
端口冲突 端口被占用 其他程序占用端口
DNS解析失败 无法解析主机名 DNS配置错误
SSL错误 SSL握手失败 证书问题

# 故障影响级别

级别 影响 响应时间
──────────────────────────────────────────────────────
P1-紧急 服务完全不可用 15分钟
P2-严重 核心功能不可用 30分钟
P3-一般 部分功能受影响 2小时
P4-轻微 性能轻微下降 4小时

1.2 故障诊断方法

故障诊断方法:

1.2.1 诊断步骤

# 故障诊断方法

1. 信息收集
步骤 内容 工具
──────────────────────────────────────────────────────
收集错误信息 错误日志、异常堆栈 日志文件
收集环境信息 版本、配置、资源 系统命令
收集时间线 故障发生时间、操作 操作日志

2. 问题分析
步骤 内容 方法
──────────────────────────────────────────────────────
定位问题范围 确定问题影响范围 排除法
分析根本原因 找出问题根本原因 5Why分析法
制定解决方案 制定修复方案 知识库

3. 解决验证
步骤 内容 方法
──────────────────────────────────────────────────────
实施解决方案 执行修复操作 操作步骤
验证修复效果 确认问题已解决 测试验证
记录总结 记录问题和解决方案 知识库

# 诊断流程图

┌─────────────────────────────────────────────────────────┐
│ 故障诊断流程 │
├─────────────────────────────────────────────────────────┤
│ │
│ 发现问题 → 收集信息 → 分析原因 → 制定方案 → 实施修复 │
│ ↓ ↓ ↓ ↓ ↓ │
│ 确认症状 查看日志 定位问题 选择方法 验证效果 │
│ │
│ 如果问题未解决: │
│ 返回”分析原因”步骤,重新分析 │
│ │
│ 如果问题已解决: │
│ 记录文档 → 更新知识库 │
│ │
└─────────────────────────────────────────────────────────┘

# 5Why分析法示例

问题:应用无法访问数据库

Why 1: 为什么无法访问数据库?
答:连接池耗尽

Why 2: 为什么连接池耗尽?
答:连接数达到最大值

Why 3: 为什么连接数达到最大值?
答:连接没有被释放

Why 4: 为什么连接没有被释放?
答:代码中没有关闭连接

Why 5: 为什么代码中没有关闭连接?
答:开发人员忘记在finally块中关闭连接

根本原因:代码缺陷,缺少连接关闭逻辑

1.3 故障诊断工具

故障诊断工具:

1.3.1 常用工具

# 故障诊断工具

1. 日志分析工具
工具 用途 位置
──────────────────────────────────────────────────────
SystemOut.log 标准输出日志 profiles/*/logs/server1/
SystemErr.log 错误日志 profiles/*/logs/server1/
trace.log 跟踪日志 profiles/*/logs/server1/
startServer.log 启动日志 profiles/*/logs/server1/

2. 系统诊断工具
工具 用途 命令
──────────────────────────────────────────────────────
serverStatus 服务器状态 serverStatus.sh
versionInfo 版本信息 versionInfo.sh
dumpNameSpace 命名空间 dumpNameSpace.sh

3. Java诊断工具
工具 用途 命令
──────────────────────────────────────────────────────
jstack 线程转储 jstack jmap 内存映射 jmap jstat 统计信息 jstat jconsole 图形监控 jconsole

4. WebSphere专用工具
工具 用途 说明
──────────────────────────────────────────────────────
TPV 实时性能查看 控制台内置
PMI 性能监控 控制台配置
HeapAnalyzer 堆分析 IBM工具

1.4 故障处理流程

故障处理流程:

1.4.1 标准流程

# 故障处理流程

1. 故障发现
– 监控告警
– 用户报告
– 主动巡检

2. 故障确认
– 确认故障现象
– 确认影响范围
– 确认故障级别

3. 故障响应
– 通知相关人员
– 启动应急预案
– 开始故障处理

4. 故障处理
– 收集诊断信息
– 分析根本原因
– 实施解决方案

5. 故障恢复
– 验证服务恢复
– 确认功能正常
– 通知相关人员

6. 故障总结
– 编写故障报告
– 更新知识库
– 制定改进措施

# 故障处理时间要求

故障级别 响应时间 解决时间 报告时间
──────────────────────────────────────────────────────
P1-紧急 15分钟 1小时 24小时内
P2-严重 30分钟 2小时 48小时内
P3-一般 2小时 4小时 72小时内
P4-轻微 4小时 8小时 1周内

风哥提示:故障处理需要有完善的流程和预案,平时要做好监控和预防工作。

Part02-生产环境规划与建议

2.1 故障预防规划

故障预防规划:

2.1.1 预防措施

# 故障预防规划

1. 配置管理
措施 内容
──────────────────────────────────────────────────────
配置备份 定期备份配置文件
变更管理 严格的变更审批流程
配置审计 定期审计配置正确性
版本控制 配置文件版本管理

2. 监控预警
措施 内容
──────────────────────────────────────────────────────
实时监控 监控关键指标
告警通知 及时告警通知
趋势分析 分析性能趋势
容量预警 容量不足预警

3. 定期巡检
巡检项 频率 内容
──────────────────────────────────────────────────────
日志检查 每天 检查错误日志
性能检查 每天 检查性能指标
安全检查 每周 检查安全配置
配置检查 每月 检查配置正确性

# 预防性维护脚本

#!/bin/bash
# preventive_maintenance.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

echo “=== 预防性维护 ===”

# 1. 检查磁盘空间
echo “1. 磁盘空间检查:”
df -h | grep -E “^/|使用”

# 2. 检查日志大小
echo “”
echo “2. 日志大小检查:”
du -sh /WebSphere/app/profiles/*/logs

# 3. 检查进程状态
echo “”
echo “3. 进程状态检查:”
ps -ef | grep java | grep WebSphere

# 4. 检查端口状态
echo “”
echo “4. 端口状态检查:”
netstat -tlnp | grep java

# 5. 检查错误日志
echo “”
echo “5. 错误日志检查:”
grep -i “error\|exception” /WebSphere/app/profiles/*/logs/*/SystemErr.log | tail -10

echo “”
echo “=== 维护完成 ===”

2.2 故障监控规划

故障监控规划:

2.2.1 监控策略

# 故障监控规划

1. 监控指标
指标 监控方式 告警阈值
──────────────────────────────────────────────────────
服务器状态 PMI 停止
应用状态 运行时查询 停止
CPU使用率 PMI > 80%
内存使用率 PMI > 80%
响应时间 监控脚本 > 2秒
错误率 日志分析 > 1%

2. 监控脚本
#!/bin/bash
# fault_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

LOG_FILE=/WebSphere/logs/fault_monitor.log

while true; do
# 检查服务器状态
STATUS=$(/WebSphere/app/profiles/Dmgr01/bin/serverStatus.sh dmgr 2>&1)

if echo “$STATUS” | grep -q “ADMU0503I”; then
STATE=”RUNNING”
else
STATE=”STOPPED”
echo “$(date): 告警 – 服务器状态异常” >> $LOG_FILE
fi

# 检查应用状态
APPS=$(/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “print AdminApp.list()” 2>/dev/null)

# 检查错误日志
ERRORS=$(grep -c “Error\|Exception” /WebSphere/app/profiles/*/logs/*/SystemErr.log 2>/dev/null)

# 记录状态
echo “$(date): 服务器=$STATE, 应用数=$(echo $APPS | wc -w), 错误数=$ERRORS” >> $LOG_FILE

sleep 60
done

3. 监控架构
┌─────────────────────────────────────────────────────────┐
│ 监控架构 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 监控采集层 │ │
│ │ PMI | 日志 | 自定义脚本 │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 监控存储层 │ │
│ │ Prometheus | InfluxDB | Elasticsearch │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 监控展示层 │ │
│ │ Grafana | Kibana | 控制台 │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 告警通知层 │ │
│ │ 邮件 | 短信 | 钉钉 | 企业微信 │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘

2.3 故障告警规划

故障告警规划:

2.3.1 告警策略

# 故障告警规划

1. 告警规则
告警类型 条件 级别
──────────────────────────────────────────────────────
服务器停止 状态非running P1
应用停止 应用状态非running P1
CPU高 CPU > 80% 持续5分钟 P2
内存高 内存 > 80% 持续5分钟 P2
响应慢 响应时间 > 2秒 P2
错误多 错误率 > 1% P3

2. 告警通知
级别 通知方式 通知对象
──────────────────────────────────────────────────────
P1 电话+短信+邮件 值班人员+领导
P2 短信+邮件 值班人员
P3 邮件 值班人员
P4 邮件 值班人员

3. 告警脚本
#!/bin/bash
# alert.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

ALERT_LEVEL=$1
ALERT_MSG=$2

case $ALERT_LEVEL in
“P1”)
# 电话通知
echo “电话通知: $ALERT_MSG”
# 短信通知
echo “短信通知: $ALERT_MSG”
# 邮件通知
echo “$ALERT_MSG” | mail -s “P1告警” admin@fgedu.net.cn
;;
“P2”)
# 短信通知
echo “短信通知: $ALERT_MSG”
# 邮件通知
echo “$ALERT_MSG” | mail -s “P2告警” admin@fgedu.net.cn
;;
“P3”)
# 邮件通知
echo “$ALERT_MSG” | mail -s “P3告警” admin@fgedu.net.cn
;;
esac

2.4 故障恢复规划

故障恢复规划:

2.4.1 恢复策略

# 故障恢复规划

1. 恢复预案
故障类型 恢复方案 恢复时间
──────────────────────────────────────────────────────
服务器停止 重启服务器 5分钟
应用停止 重启应用 2分钟
配置损坏 恢复配置备份 15分钟
数据损坏 恢复数据备份 30分钟

2. 恢复脚本
#!/bin/bash
# recovery.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

FAULT_TYPE=$1

case $FAULT_TYPE in
“server_down”)
echo “执行服务器恢复…”
/WebSphere/app/profiles/Dmgr01/bin/startManager.sh
;;
“app_down”)
echo “执行应用恢复…”
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-username fgeduadmin -password fgedu123 \
-c “AdminControl.invoke(AdminControl.queryNames(‘type=ApplicationManager,process=server1,*’), ‘startApplication’, ‘fgedu-app’)”
;;
“config_corrupt”)
echo “执行配置恢复…”
/WebSphere/app/profiles/Dmgr01/bin/restoreConfig.sh /backup/was/config_latest.zip
;;
esac

3. 恢复验证
验证项 验证内容 通过标准
──────────────────────────────────────────────────────
服务状态 服务是否正常 状态为running
应用状态 应用是否正常 应用正常运行
功能测试 功能是否正常 功能测试通过
性能测试 性能是否达标 性能指标达标

Part03-生产环境项目实施方案

3.1 启动故障处理实战

启动故障处理:

3.1.1 常见启动故障

# 启动故障处理

1. 端口冲突
症状:
ADMU0014E: 端口 9080 已被使用

诊断:
# 检查端口占用
netstat -tlnp | grep 9080

tcp6 0 0 :::9080 :::* LISTEN 12345/java

# 检查进程
ps -ef | grep 12345

fgedu 12345 1 5 10:00 ? 00:00:30 /WebSphere/app/java/bin/java …

解决:
# 方案1:停止占用端口的进程
kill -9 12345

# 方案2:修改WebSphere端口
管理控制台 > 服务器 > WebSphere应用服务器 > server1 > 端口

2. 配置文件损坏
症状:
ADMU0005E: 无法读取配置文件

诊断:
# 检查配置文件
cat /WebSphere/app/profiles/Dmgr01/config/cells/fgeduCell01/cell.xml

# 文件内容为空或损坏

解决:
# 恢复配置
/WebSphere/app/profiles/Dmgr01/bin/restoreConfig.sh /backup/was/config_latest.zip

执行结果:
ADMU0004I: 备份文件已成功恢复

3. 权限问题
症状:
ADMU0006E: 权限被拒绝

诊断:
# 检查文件权限
ls -la /WebSphere/app/profiles/Dmgr01/

drwxr-xr-x 5 root root 4096 4月10日 10:00 profiles

# 权限属于root,但用fgedu用户启动

解决:
# 修改权限
chown -R fgedu:fsgroup /WebSphere/app

# 重新启动
/WebSphere/app/profiles/Dmgr01/bin/startManager.sh

4. 内存不足
症状:
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

诊断:
# 检查系统内存
free -m

total used free
Mem: 2048 1800 248

# 内存不足

解决:
# 方案1:增加系统内存
# 方案2:减少JVM堆内存

# 修改JVM参数
AdminConfig.modify(jvm, ‘[[initialHeapSize 512] [maximumHeapSize 1024]]’)

3.2 应用异常处理实战

应用异常处理:

3.2.1 常见应用故障

# 应用异常处理

1. 应用部署失败
症状:
ADMA0085E: 应用程序部署失败

诊断:
# 查看部署日志
cat /WebSphere/app/profiles/Dmgr01/logs/dmgr/SystemErr.log

[4/10/26 10:00:00] ADMA0085E: 应用程序部署失败
原因:EAR文件格式不正确

解决:
# 验证EAR文件
/WebSphere/app/bin/earvalidator /apps/fgedu-app.ear

# 重新打包EAR
jar -cvf fgedu-app.ear -C build/ .

# 重新部署
AdminApp.install(‘/apps/fgedu-app.ear’, ‘[-appname fgedu-app]’)

2. 应用启动失败
症状:
应用状态为”已停止”,无法启动

诊断:
# 查看应用日志
cat /WebSphere/app/profiles/AppSrv01/logs/server1/SystemErr.log

[4/10/26 10:00:00] SRVE0169I: 正在加载 Web 模块
[4/10/26 10:00:01] SRVE0014E: 无法加载 Servlet: MainServlet
java.lang.ClassNotFoundException: com.fgedu.servlet.MainServlet

解决:
# 检查类路径
# 确认类文件存在
jar -tf fgedu-app.war | grep MainServlet

WEB-INF/classes/com/fgedu/servlet/MainServlet.class

# 检查类加载器配置
管理控制台 > 应用程序 > 类加载器

3. 应用运行异常
症状:
应用运行中出现异常

诊断:
# 查看异常堆栈
grep -A 20 “Exception” /WebSphere/app/profiles/AppSrv01/logs/server1/SystemErr.log

java.lang.NullPointerException
at com.fgedu.service.UserService.getUser(UserService.java:50)
at com.fgedu.controller.UserController.getUser(UserController.java:30)

解决:
# 分析代码
# 定位到UserService.java第50行
# 修复空指针问题

4. 应用崩溃
症状:
应用突然停止,无响应

诊断:
# 检查崩溃日志
ls -la /WebSphere/app/profiles/AppSrv01/

javacore.20260410.100000.12345.txt
heapdump.20260410.100000.12345.phd

# 分析javacore
grep “OutOfMemory” javacore.*.txt

1XHSTACKFULL OutOfMemoryError

解决:
# 增加堆内存
AdminConfig.modify(jvm, ‘[[maximumHeapSize 4096]]’)

# 分析内存泄漏
# 使用HeapAnalyzer分析heapdump

3.3 性能故障处理实战

性能故障处理:

3.3.1 常见性能故障

# 性能故障处理

1. 响应慢
症状:
请求响应时间过长

诊断:
# 检查响应时间
curl -w “响应时间: %{time_total}s\n” -o /dev/null -s http://localhost:9080/fgedu-app/

响应时间: 5.234s

# 检查系统资源
top

# 检查线程状态
jstack | grep -A 5 “BLOCKED”

解决:
# 优化数据库查询
# 增加缓存
# 优化代码

2. CPU高
症状:
CPU使用率持续高位

诊断:
# 查看CPU使用
top

# 找出高CPU线程
top -H -p

# 线程转储
jstack > thread_dump.txt

# 分析线程
grep “nid=0x” thread_dump.txt

解决:
# 分析线程堆栈
# 找出CPU消耗高的代码
# 优化代码

3. 内存溢出
症状:
OutOfMemoryError

诊断:
# 查看内存使用
jstat -gc

# 生成堆转储
jmap -dump:format=b,file=heap.hprof

# 分析堆转储
# 使用MAT或HeapAnalyzer

解决:
# 增加堆内存
# 修复内存泄漏
# 优化对象创建

4. 连接池耗尽
症状:
无法获取数据库连接

诊断:
# 查看连接池状态
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-c “ds=AdminControl.queryNames(‘type=DataSource,name=fgedudb,*’); print AdminControl.getAttribute(ds, ‘stats’)”

{
“activeConnections”: 100,
“freeConnections”: 0,
“waitingThreads”: 20
}

解决:
# 增加连接池大小
# 检查连接泄漏
# 优化数据库查询

3.4 集群故障处理实战

集群故障处理:

3.4.1 常见集群故障

# 集群故障处理

1. 节点无法加入集群
症状:
节点无法加入Cell

诊断:
# 查看节点日志
cat /WebSphere/app/profiles/AppSrv01/logs/nodeagent/SystemErr.log

[4/10/26 10:00:00] ADMU0003E: 无法连接到 Deployment Manager

# 检查网络
ping fgedu.net.cn

# 检查端口
telnet fgedu.net.cn 8879

解决:
# 检查Dmgr状态
/WebSphere/app/profiles/Dmgr01/bin/serverStatus.sh dmgr

# 检查防火墙
iptables -L

# 重新添加节点
/WebSphere/app/profiles/AppSrv01/bin/addNode.sh fgedu.net.cn 8879

2. 配置同步失败
症状:
节点配置不同步

诊断:
# 检查同步状态
/WebSphere/app/profiles/Dmgr01/bin/wsadmin.sh -lang jython \
-c “print AdminNodeManagement.syncNode(‘fgeduNode01’, ‘true’)”

解决:
# 强制同步
AdminNodeManagement.syncNode(‘fgeduNode01’, ‘true’)

# 重启节点
/WebSphere/app/profiles/AppSrv01/bin/stopNode.sh
/WebSphere/app/profiles/AppSrv01/bin/startNode.sh

3. 会话复制失败
症状:
会话无法在节点间复制

诊断:
# 检查会话配置
管理控制台 > 服务器 > 会话管理

# 检查网络
# 检查内存到内存复制配置

解决:
# 检查会话配置
# 确保所有节点配置一致
# 检查网络连接

4. 负载均衡异常
症状:
请求分发不均匀

诊断:
# 检查负载均衡配置
# 检查权重配置
# 检查健康检查

解决:
# 调整权重
# 检查健康检查URL
# 重启负载均衡器

风哥提示:故障处理需要系统性的方法,从现象到原因再到解决方案,每一步都要有依据。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 服务器启动失败案例

服务器启动失败案例:

4.1.1 案例背景

# 服务器启动失败案例

故障现象:
WebSphere服务器无法启动,报端口冲突错误

诊断过程:
1. 查看启动日志
cat /WebSphere/app/profiles/Dmgr01/logs/dmgr/startServer.log

ADMU0014E: 端口 9043 已被使用
ADMU0011E: 无法启动服务器 dmgr

2. 检查端口占用
netstat -tlnp | grep 9043

tcp6 0 0 :::9043 :::* LISTEN 54321/java

3. 检查进程
ps -ef | grep 54321

root 54321 1 5 09:50 ? 00:00:30 /WebSphere/app/java/bin/java …

4. 分析原因
发现有一个残留的WebSphere进程未正常退出

解决步骤:
1. 停止残留进程
kill -9 54321

2. 确认端口释放
netstat -tlnp | grep 9043

# 无输出,端口已释放

3. 重新启动
/WebSphere/app/profiles/Dmgr01/bin/startManager.sh

ADMU3000I: 服务器 dmgr 已启动

4. 验证服务
/WebSphere/app/profiles/Dmgr01/bin/serverStatus.sh dmgr

ADMU0503I: 服务器 dmgr 已启动

故障总结:
– 原因:上次非正常关闭导致进程残留
– 影响:服务器无法启动
– 解决:清理残留进程
– 恢复时间:5分钟
– 预防:使用标准停止命令

4.2 应用部署失败案例

应用部署失败案例:

4.2.1 案例背景

# 应用部署失败案例

故障现象:
应用部署时报错,无法完成部署

诊断过程:
1. 查看部署日志
cat /WebSphere/app/profiles/Dmgr01/logs/dmgr/SystemErr.log

ADMA0085E: 应用程序部署失败
原因:web.xml 文件格式不正确

2. 验证EAR文件
/WebSphere/app/bin/earvalidator /apps/fgedu-app.ear

Error: web.xml is not valid
Line 25: Element type “servlet” must be followed by either attribute specifications, “>” or “/>”

3. 检查web.xml
cat /apps/fgedu-app.war/WEB-INF/web.xml | head -30


MainServlet
com.fgedu.servlet.MainServlet

4. 分析原因
web.xml文件格式错误,缺少闭合标签

解决步骤:
1. 修复web.xml

MainServlet
com.fgedu.servlet.MainServlet

2. 重新打包
jar -cvf fgedu-app.war -C build/ .
jar -cvf fgedu-app.ear -C ear/ .

3. 验证EAR
/WebSphere/app/bin/earvalidator /apps/fgedu-app.ear

Validation successful

4. 重新部署
AdminApp.install(‘/apps/fgedu-app.ear’, ‘[-appname fgedu-app]’)

ADMA5005I: 应用程序 fgedu-app 已成功安装

故障总结:
– 原因:web.xml格式错误
– 影响:应用无法部署
– 解决:修复XML格式
– 恢复时间:10分钟
– 预防:部署前验证EAR

4.3 内存溢出故障案例

内存溢出故障案例:

4.3.1 案例背景

# 内存溢出故障案例

故障现象:
应用运行一段时间后崩溃,报OutOfMemoryError

诊断过程:
1. 查看错误日志
cat /WebSphere/app/profiles/AppSrv01/logs/server1/SystemErr.log

java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.resize(HashMap.java:704)
at java.util.HashMap.putVal(HashMap.java:663)

2. 检查内存使用
jstat -gc

S0C S1C S0U S1U EC EU OC OU
51200 51200 0.0 51200.0 409600 0.0 1048576 1048576

# 老年代已满

3. 分析堆转储
# 使用MAT分析heapdump

发现:HashMap中存储了大量未释放的对象

4. 分析代码
定位到缓存实现,发现缓存没有过期机制

解决步骤:
1. 临时解决:增加堆内存
AdminConfig.modify(jvm, ‘[[maximumHeapSize 4096]]’)

2. 根本解决:修复代码
# 添加缓存过期机制
# 使用WeakHashMap
# 添加缓存大小限制

3. 重启应用
AdminControl.invoke(
AdminControl.queryNames(‘type=ApplicationManager,process=server1,*’),
‘restartApplication’, ‘fgedu-app’
)

4. 监控验证
# 持续监控内存使用
jstat -gc 60 100

故障总结:
– 原因:缓存无过期机制导致内存泄漏
– 影响:应用崩溃
– 解决:修复缓存实现
– 恢复时间:30分钟
– 预防:代码审查,内存监控

Part05-风哥经验总结与分享

5.1 故障处理检查清单

故障处理检查清单:

# 故障处理检查清单

故障发现:
□ 故障现象已确认
□ 影响范围已评估
□ 故障级别已确定
□ 相关人员已通知

故障诊断:
□ 日志已收集
□ 环境信息已收集
□ 根本原因已定位
□ 解决方案已制定

故障处理:
□ 解决方案已评审
□ 操作步骤已记录
□ 变更已执行
□ 效果已验证

故障总结:
□ 故障报告已编写
□ 知识库已更新
□ 改进措施已制定
□ 预防措施已实施

5.2 故障处理常见问题

故障处理常见问题:

5.2.1 常见问题汇总

# 故障处理常见问题

问题1:日志信息不足
原因:日志级别设置过低
解决:调整日志级别,增加详细日志

问题2:无法定位根本原因
原因:问题复杂,信息不足
解决:收集更多信息,使用多种诊断工具

问题3:解决方案无效
原因:分析错误,方案不当
解决:重新分析,尝试其他方案

问题4:故障反复出现
原因:根本原因未解决
解决:深入分析,彻底解决根本原因

问题5:处理时间过长
原因:流程不熟练,资源不足
解决:建立预案,提前准备资源

5.3 故障处理最佳实践

基于多年WebSphere运维经验,总结故障处理最佳实践:

5.3.1 处理原则

  • 快速响应:第一时间响应故障
  • 系统分析:系统性分析问题
  • 彻底解决:解决根本原因
  • 总结改进:总结经验教训

5.3.2 处理建议

  • 预防为主:做好监控和预防
  • 预案准备:提前准备应急预案
  • 知识积累:建立知识库
  • 持续改进:不断优化流程
生产环境建议:故障处理是运维的核心能力,建议建立完善的故障处理流程和知识库,不断提高故障处理效率。from WebSphere视频:www.itpux.com

本文档详细介绍了WebSphere 9.0.5的常见故障处理,包括启动故障、应用异常、性能问题等内容。通过学习本文档,读者可以掌握WebSphere故障处理的方法和最佳实践。更多视频教程www.fgedu.net.cn

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息