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 故障分类详解
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
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
解决:
# 优化数据库查询
# 增加缓存
# 优化代码
2. CPU高
症状:
CPU使用率持续高位
诊断:
# 查看CPU使用
top
# 找出高CPU线程 # 线程转储 # 分析线程 解决: 3. 内存溢出 诊断: # 生成堆转储 # 分析堆转储 解决: 4. 连接池耗尽 诊断: { 解决:
top -H -p
jstack
grep “nid=0x” thread_dump.txt
# 分析线程堆栈
# 找出CPU消耗高的代码
# 优化代码
症状:
OutOfMemoryError
# 查看内存使用
jstat -gc
jmap -dump:format=b,file=heap.hprof
# 使用MAT或HeapAnalyzer
# 增加堆内存
# 修复内存泄漏
# 优化对象创建
症状:
无法获取数据库连接
# 查看连接池状态
/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
# 重启负载均衡器
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
4. 分析原因
web.xml文件格式错误,缺少闭合标签
解决步骤:
1. 修复web.xml
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. 检查内存使用 S0C S1C S0U S1U EC EU OC OU # 老年代已满 3. 分析堆转储 发现:HashMap中存储了大量未释放的对象 4. 分析代码 解决步骤: 2. 根本解决:修复代码 3. 重启应用 4. 监控验证 故障总结:
jstat -gc
51200 51200 0.0 51200.0 409600 0.0 1048576 1048576
# 使用MAT分析heapdump
定位到缓存实现,发现缓存没有过期机制
1. 临时解决:增加堆内存
AdminConfig.modify(jvm, ‘[[maximumHeapSize 4096]]’)
# 添加缓存过期机制
# 使用WeakHashMap
# 添加缓存大小限制
AdminControl.invoke(
AdminControl.queryNames(‘type=ApplicationManager,process=server1,*’),
‘restartApplication’, ‘fgedu-app’
)
# 持续监控内存使用
jstat -gc
– 原因:缓存无过期机制导致内存泄漏
– 影响:应用崩溃
– 解决:修复缓存实现
– 恢复时间:30分钟
– 预防:代码审查,内存监控
Part05-风哥经验总结与分享
5.1 故障处理检查清单
故障处理检查清单:
故障发现:
□ 故障现象已确认
□ 影响范围已评估
□ 故障级别已确定
□ 相关人员已通知
故障诊断:
□ 日志已收集
□ 环境信息已收集
□ 根本原因已定位
□ 解决方案已制定
故障处理:
□ 解决方案已评审
□ 操作步骤已记录
□ 变更已执行
□ 效果已验证
故障总结:
□ 故障报告已编写
□ 知识库已更新
□ 改进措施已制定
□ 预防措施已实施
5.2 故障处理常见问题
故障处理常见问题:
5.2.1 常见问题汇总
问题1:日志信息不足
原因:日志级别设置过低
解决:调整日志级别,增加详细日志
问题2:无法定位根本原因
原因:问题复杂,信息不足
解决:收集更多信息,使用多种诊断工具
问题3:解决方案无效
原因:分析错误,方案不当
解决:重新分析,尝试其他方案
问题4:故障反复出现
原因:根本原因未解决
解决:深入分析,彻底解决根本原因
问题5:处理时间过长
原因:流程不熟练,资源不足
解决:建立预案,提前准备资源
5.3 故障处理最佳实践
基于多年WebSphere运维经验,总结故障处理最佳实践:
5.3.1 处理原则
- 快速响应:第一时间响应故障
- 系统分析:系统性分析问题
- 彻底解决:解决根本原因
- 总结改进:总结经验教训
5.3.2 处理建议
- 预防为主:做好监控和预防
- 预案准备:提前准备应急预案
- 知识积累:建立知识库
- 持续改进:不断优化流程
本文档详细介绍了WebSphere 9.0.5的常见故障处理,包括启动故障、应用异常、性能问题等内容。通过学习本文档,读者可以掌握WebSphere故障处理的方法和最佳实践。更多视频教程www.fgedu.net.cn
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
