1. 首页 > WebLogic教程 > 正文

WebLogic教程FG029-WebLogic常见故障与解决方案

内容简介

本教程基于Oracle WebLogic Server 15c(15.1.1.0.0)官方文档,详细介绍WebLogic常见故障的分析方法和解决方案,结合生产环境经验,帮助读者掌握WebLogic故障排除的技能。

风哥教程参考WebLogic官方文档故障排除指南、错误消息文档等相关内容,内容涵盖启动故障、部署故障、运行故障、性能故障等方面。

本文档适用于WebLogic管理员和系统工程师,通过详细的故障分析和解决方案,确保WebLogic系统的稳定运行。

目录大纲

Part01-基础概念与理论知识

1.1 故障排除概述

WebLogic故障排除是指识别、分析和解决WebLogic系统中出现的问题的过程。故障排除的目标包括:

  • 快速识别问题:及时发现系统中的故障
  • 分析故障原因:找出故障的根本原因
  • 采取有效措施:实施解决方案,恢复系统运行
  • 防止故障再次发生:采取预防措施,避免类似故障再次出现

故障排除的主要步骤包括:

  • 收集信息:收集系统日志、错误消息、配置信息等
  • 分析信息:分析收集到的信息,找出故障原因
  • 制定解决方案:根据故障原因,制定解决方案
  • 实施解决方案:执行解决方案,恢复系统运行
  • 验证解决方案:验证系统是否恢复正常运行
  • 记录和总结:记录故障原因和解决方案,总结经验教训

学习交流加群风哥微信: itpux-com。

1.2 故障分类

WebLogic故障可以分为以下几类:

  • 启动故障:WebLogic服务器无法正常启动
  • 部署故障:应用无法正常部署
  • 运行故障:WebLogic服务器在运行过程中出现问题
  • 性能故障:WebLogic服务器性能下降
  • 安全故障:WebLogic服务器出现安全问题
  • 网络故障:WebLogic服务器网络连接出现问题

1.3 故障排除方法

WebLogic故障排除的主要方法包括:

  • 查看日志:分析WebLogic服务器日志,找出错误信息
  • 使用诊断工具:使用WebLogic诊断框架(WLDF)等工具诊断故障
  • 检查配置:检查WebLogic服务器的配置,找出配置错误
  • 测试连接:测试网络连接、数据库连接等
  • 查看系统资源:检查系统的CPU、内存、磁盘等资源使用情况
  • 使用调试工具:使用调试工具分析应用代码
  • 风哥教程参考文档:参考WebLogic官方文档和知识库,查找解决方案

风哥提示:故障排除需要系统的方法和丰富的经验,通过不断学习和实践,提高故障排除的能力。

Part02-生产环境规划与建议

2.1 故障预防

WebLogic故障预防的主要措施:

  • 定期更新:及时应用WebLogic补丁和更新
  • 合理配置:根据应用需求,合理配置WebLogic服务器
  • 监控系统:建立监控系统,及时发现系统异常
  • 备份配置:定期备份WebLogic配置,以便在配置错误时快速恢复
  • 测试变更:在生产环境之前,在测试环境中测试变更
  • 培训人员:培训WebLogic管理员,提高故障排除能力

2.2 故障监控

WebLogic故障监控的建议:

  • 使用监控工具:使用WebLogic控制台、Oracle Enterprise Manager、Prometheus等工具监控系统
  • 设置告警:设置系统告警,当系统出现异常时及时通知
  • 定期检查:定期检查系统日志和监控数据,发现潜在问题
  • 性能监控:监控系统性能,及时发现性能瓶颈
  • 健康检查:定期进行系统健康检查,确保系统正常运行

2.3 故障响应

WebLogic故障响应的建议:

  • 建立响应团队:建立专业的故障响应团队,负责处理系统故障
  • 制定响应流程:制定详细的故障响应流程,确保故障处理的效率
  • 快速响应:当发生故障时,快速响应,减少故障对系统的影响
  • 记录故障:记录故障的原因、处理过程和解决方案
  • 总结经验:定期总结故障处理经验,提高故障处理能力

更多视频教程www.fgedu.net.cn

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

3.1 启动故障

WebLogic启动故障的常见原因和解决方案:

1. 端口冲突

# 端口冲突
原因:WebLogic服务器使用的端口已被其他进程占用
解决方案:
1. 检查端口使用情况:netstat -tulpn | grep 7001
2. 停止占用端口的进程
3. 修改WebLogic服务器的端口配置
4. 重新启动WebLogic服务器

2. 配置错误

# 配置错误
原因:WebLogic配置文件中的配置错误
解决方案:
1. 检查配置文件:/WebLogic/fgdata/domains/fgedudomain/config/config.xml
2. 修复配置错误
3. 重新启动WebLogic服务器

3. 内存不足

# 内存不足
原因:WebLogic服务器内存配置不足
解决方案:
1. 增加JVM内存配置:修改setDomainEnv.sh中的JVM参数
2. 重新启动WebLogic服务器

3.2 部署故障

WebLogic部署故障的常见原因和解决方案:

1. 应用包错误

# 应用包错误
原因:应用包损坏或格式错误
解决方案:
1. 检查应用包:jar tvf fgeduApp.war
2. 重新打包应用
3. 重新部署应用

2. 依赖缺失

# 依赖缺失
原因:应用依赖的库文件缺失
解决方案:
1. 检查应用依赖:查看应用的pom.xml或build.xml
2. 添加缺失的依赖
3. 重新部署应用

3. 部署超时

# 部署超时
原因:应用部署时间过长,超过了WebLogic的部署超时时间
解决方案:
1. 增加部署超时时间:修改WebLogic部署配置
2. 优化应用部署时间:减少应用大小,优化应用代码
3. 重新部署应用

3.3 运行故障

WebLogic运行故障的常见原因和解决方案:

1. 内存泄漏

# 内存泄漏
原因:应用代码存在内存泄漏
解决方案:
1. 使用内存分析工具:如MAT分析内存泄漏
2. 修复应用代码中的内存泄漏问题
3. 重启WebLogic服务器

2. 连接池耗尽

# 连接池耗尽
原因:应用使用数据库连接后未正确释放,导致连接池耗尽
解决方案:
1. 增加连接池大小:修改连接池配置
2. 修复应用代码:确保正确释放数据库连接
3. 重启WebLogic服务器

3. 线程池饱和

# 线程池饱和
原因:应用请求过多,导致线程池饱和
解决方案:
1. 增加线程池大小:修改线程池配置
2. 优化应用代码:减少线程阻塞
3. 使用负载均衡:分发请求到多个服务器实例

学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 启动故障实战

WebLogic启动故障的实战案例:

1. 端口冲突故障

# 检查端口使用情况
netstat -tulpn | grep 7001

tcp 0 0 0.0.0.0:7001 0.0.0.0:* LISTEN 1234/java

# 停止占用端口的进程
kill -9 1234

[1]+ Killed java -Xms4g -Xmx4g -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 -XX:InitiatingHeapOccupancyPercent=45 -XX:+UseLargePages -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -Dweblogic.Name=AdminServer -Djava.security.policy=/WebLogic/app/weblogic15c/wlserver/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -Dweblogic.system.BootIdentityFile=/WebLogic/fgdata/domains/fgedudomain/servers/AdminServer/security/boot.properties -Dweblogic.nodemanager.ServiceEnabled=true -Dweblogic.nmservice.RotationEnabled=true -Dweblogic.security.SSL.ignoreHostnameVerification=true -Dweblogic.ReverseDNSEnabled=false -Dweblogic.log.StdoutSeverity=Debug weblogic.Server

# 重新启动WebLogic服务器
cd /WebLogic/fgdata/domains/fgedudomain/bin
./startWebLogic.sh





2. 内存不足故障

# 查看JVM内存配置
cd /WebLogic/fgdata/domains/fgedudomain/bin
cat setDomainEnv.sh | grep JAVA_OPTIONS

export JAVA_OPTIONS=”$JAVA_OPTIONS -Xms1g -Xmx1g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m”

# 修改JVM内存配置
cd /WebLogic/fgdata/domains/fgedudomain/bin
vi setDomainEnv.sh

# 修改后的JVM内存配置
export JAVA_OPTIONS=”$JAVA_OPTIONS -Xms4g -Xmx4g -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1g”

# 重新启动WebLogic服务器
cd /WebLogic/fgdata/domains/fgedudomain/bin
./startWebLogic.sh





4.2 部署故障实战

WebLogic部署故障的实战案例:

1. 应用包错误故障

# 检查应用包
jar tvf /WebLogic/app/applications/fgeduApp.war

jar: /WebLogic/app/applications/fgeduApp.war: invalid zip file

# 重新打包应用
cd /WebLogic/app/applications
jar cvf fgeduApp.war *

adding: META-INF/ (in=0) (out=0) (stored 0%)
adding: META-INF/MANIFEST.MF (in=76) (out=76) (deflated 0%)
adding: WEB-INF/ (in=0) (out=0) (stored 0%)
adding: WEB-INF/web.xml (in=1024) (out=456) (deflated 55%)
adding: WEB-INF/lib/ (in=0) (out=0) (stored 0%)
adding: WEB-INF/lib/log4j.jar (in=102400) (out=45600) (deflated 55%)
adding: hello.jsp (in=512) (out=256) (deflated 50%)

# 重新部署应用
cd /WebLogic/app/weblogic15c/wlserver/server/bin
./weblogic.Deployer -adminurl t3://localhost:7001 -user weblogic -password password123 -deploy -name fgeduApp -source /WebLogic/app/applications/fgeduApp.war -targets fgeduHAcluster

2. 依赖缺失故障
# 查看部署日志
tail -n 100 /WebLogic/fgdata/domains/fgedudomain/servers/AdminServer/logs/AdminServer.log






weblogic.application.ModuleException: java.lang.NoClassDefFoundError: org/apache/log4j/Logger

# 添加缺失的依赖
cd /WebLogic/app/applications/WEB-INF/lib
wget https://repo1.maven.org/maven2/log4j/log4j/1.2.17/log4j-1.2.17.jar

–2024-06-01 10:04:00– https://repo1.maven.org/maven2/log4j/log4j/1.2.17/log4j-1.2.17.jar
Resolving repo1.maven.org (repo1.maven.org)… 199.232.68.199
Connecting to repo1.maven.org (repo1.maven.org)|199.232.68.199|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 478164 (467K) [application/java-archive]
Saving to: ‘log4j-1.2.17.jar’

log4j-1.2.17.jar 100%[======================================>] 466.96K 1.26MB/s in 0.4s

2024-06-01 10:04:01 (1.26 MB/s) – ‘log4j-1.2.17.jar’ saved [478164/478164]

# 重新打包应用
cd /WebLogic/app/applications
jar cvf fgeduApp.war *

adding: META-INF/ (in=0) (out=0) (stored 0%)
adding: META-INF/MANIFEST.MF (in=76) (out=76) (deflated 0%)
adding: WEB-INF/ (in=0) (out=0) (stored 0%)
adding: WEB-INF/web.xml (in=1024) (out=456) (deflated 55%)
adding: WEB-INF/lib/ (in=0) (out=0) (stored 0%)
adding: WEB-INF/lib/log4j-1.2.17.jar (in=478164) (out=215164) (deflated 55%)
adding: hello.jsp (in=512) (out=256) (deflated 50%)

# 重新部署应用
cd /WebLogic/app/weblogic15c/wlserver/server/bin
./weblogic.Deployer -adminurl t3://localhost:7001 -user weblogic -password password123 -deploy -name fgeduApp -source /WebLogic/app/applications/fgeduApp.war -targets fgeduHAcluster

4.3 运行故障实战

WebLogic运行故障的实战案例:

1. 内存泄漏故障

# 查看JVM内存使用情况
jstat -gcutil 1234 1000 10

S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 99.99 99.99 98.76 95.43 123 0.123 50 5.678 5.801
0.00 0.00 99.99 99.99 98.76 95.43 123 0.123 51 5.789 5.912
0.00 0.00 99.99 99.99 98.76 95.43 123 0.123 52 5.890 6.013
0.00 0.00 99.99 99.99 98.76 95.43 123 0.123 53 5.991 6.114
0.00 0.00 99.99 99.99 98.76 95.43 123 0.123 54 6.092 6.215
0.00 0.00 99.99 99.99 98.76 95.43 123 0.123 55 6.193 6.316
0.00 0.00 99.99 99.99 98.76 95.43 123 0.123 56 6.294 6.417
0.00 0.00 99.99 99.99 98.76 95.43 123 0.123 57 6.395 6.518
0.00 0.00 99.99 99.99 98.76 95.43 123 0.123 58 6.496 6.619
0.00 0.00 99.99 99.99 98.76 95.43 123 0.123 59 6.597 6.720

# 生成堆转储文件
jmap -dump:format=b,file=/WebLogic/dumps/heap.hprof 1234

Dumping heap to /WebLogic/dumps/heap.hprof …
Heap dump file created

# 使用MAT分析堆转储文件
cd /WebLogic/tools/mat
./MemoryAnalyzer

# MAT分析结果
Leak Suspect 1: java.util.ArrayList @ 0x78a0b123
– Retained Heap: 500MB
– Description: java.util.ArrayList holding references to com.fgedu.app.User objects
– Problem: The ArrayList is not being cleared, causing memory leak

# 修复应用代码中的内存泄漏问题
# 修改UserManager.java,添加clearUsers()方法
cd /WebLogic/app/sources
vi UserManager.java

public class UserManager {
private List users = new ArrayList<>();

public void addUser(User user) {
users.add(user);
}

public void clearUsers() {
users.clear(); // 添加此方法,用于清理用户列表
}
}

# 重新编译和部署应用
cd /WebLogic/app/sources
javac -cp /WebLogic/app/weblogic15c/wlserver/server/lib/weblogic.jar UserManager.java
cd /WebLogic/app/applications
jar cvf fgeduApp.war *
cd /WebLogic/app/weblogic15c/wlserver/server/bin
./weblogic.Deployer -adminurl t3://localhost:7001 -user weblogic -password password123 -deploy -name fgeduApp -source /WebLogic/app/applications/fgeduApp.war -targets fgeduHAcluster

2. 连接池耗尽故障
# 查看连接池状态
cd /WebLogic/app/weblogic15c/oracle_common/common/bin
./wlst.sh
connect(‘weblogic’, ‘password123’, ‘t3://localhost:7001’)
domain = cmo
jdbcSystemResource = domain.lookupJDBCSystemResource(‘fgeduDataSource’)
jdbcRuntime = jdbcSystemResource.getJDBCResource().getJDBCRuntime()
connectionPoolRuntime = jdbcRuntime.getConnectionPoolRuntime()
print(‘Connection Pool Status:’)
print(‘Active Connections: ‘ + str(connectionPoolRuntime.getActiveConnectionsCurrentCount()))
print(‘Total Connections: ‘ + str(connectionPoolRuntime.getConnectionsTotalCount()))
print(‘Available Connections: ‘ + str(connectionPoolRuntime.getAvailableConnectionsCurrentCount()))
print(‘Waiting For Connection: ‘ + str(connectionPoolRuntime.getWaitSecondsHighCount()))
exit()

Initializing WebLogic Scripting Tool (WLST) …

Welcome to WebLogic Server Administration Scripting Shell

Connecting to t3://localhost:7001 with userid weblogic …

Connection Pool Status:
Active Connections: 50
Total Connections: 50
Available Connections: 0
Waiting For Connection: 30

Exiting WebLogic Scripting Tool.

# 增加连接池大小
cd /WebLogic/app/weblogic15c/oracle_common/common/bin
./wlst.sh
connect(‘weblogic’, ‘password123’, ‘t3://localhost:7001’)
edit()
startEdit()
domain = cmo
jdbcSystemResource = domain.lookupJDBCSystemResource(‘fgeduDataSource’)
jdbcResource = jdbcSystemResource.getJDBCResource()
jdbcConnectionPoolParams = jdbcResource.getJDBCConnectionPoolParams()
jdbcConnectionPoolParams.setMaximumCapacity(100)
save()
activate()
exit()

Initializing WebLogic Scripting Tool (WLST) …

Welcome to WebLogic Server Administration Scripting Shell

Connecting to t3://localhost:7001 with userid weblogic …

Location changed to edit tree. This is a writable tree with No Root. This tree includes all the configuration that can be edited.

Starting an edit session …

Session started, be sure to save and activate your changes when you are done.

Saving all your changes …

Saved all your changes successfully.

Activating all your changes, this may take a while …

The edit lock associated with this edit session is released once the activation is completed.

Activation completed

Exiting WebLogic Scripting Tool.

更多学习教程公众号风哥教程itpux_com

Part05-风哥经验总结与分享

5.1 故障排除最佳实践

  • 系统收集信息:故障发生时,系统收集日志、错误消息、配置信息等,为故障分析提供依据
  • 分析故障原因:根据收集到的信息,分析故障的根本原因,避免盲目操作
  • 制定解决方案:根据故障原因,制定详细的解决方案,包括临时解决方案和永久解决方案
  • 实施解决方案:按照解决方案,逐步实施,确保系统的稳定运行
  • 验证解决方案:实施解决方案后,验证系统是否恢复正常运行
  • 记录和总结:记录故障的原因、处理过程和解决方案,总结经验教训
  • 持续改进:根据故障处理的经验,持续改进系统的设计和配置

5.2 常见故障解决方案

  • 启动故障:检查端口冲突、配置错误、内存不足等问题,采取相应的解决方案
  • 部署故障:检查应用包、依赖缺失、部署超时等问题,采取相应的解决方案
  • 运行故障:检查内存泄漏、连接池耗尽、线程池饱和等问题,采取相应的解决方案
  • 性能故障:检查JVM配置、连接池配置、线程池配置等,优化系统性能
  • 安全故障:检查安全配置、补丁更新、访问控制等,加强系统安全
  • 网络故障:检查网络连接、防火墙配置、DNS配置等,确保网络畅通

5.3 故障预防措施

  • 定期更新:及时应用WebLogic补丁和更新,修复已知漏洞
  • 合理配置:根据应用需求,合理配置WebLogic服务器,避免配置错误
  • 监控系统:建立监控系统,及时发现系统异常,提前预警
  • 备份配置:定期备份WebLogic配置,以便在配置错误时快速恢复
  • 测试变更:在生产环境之前,在测试环境中测试变更,确保变更的正确性
  • 培训人员:培训WebLogic管理员,提高故障排除能力
  • 文档化:文档化系统配置、故障处理流程和解决方案,便于维护和参考

风哥提示:WebLogic故障排除需要系统的方法和丰富的经验,通过不断学习和实践,提高故障排除的能力,确保系统的稳定运行。

from WebLogic视频:www.itpux.com

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

联系我们

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

微信号:itpux-com

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