在CentOS下排查WebLogic故障可以按照以下步骤进行:
1. 确定故障类型
- 硬件问题:检查服务器硬件状态,如CPU、内存、磁盘空间等。
- 软件问题:检查WebLogic配置、日志文件、应用程序代码等。
- 网络问题:检查网络连接、端口状态等。
2. 查看日志文件
- WebLogic日志:通常位于
DOMAIN_HOME/servers/server_name/logs
目录下,主要关注AdminServer.out
、server_name.out
和server_name.log
这三个文件。 - 系统日志:检查
/var/log
目录下的系统日志,查找错误消息和警告。
3. 检查进程和服务
- 使用
ps
、top
和systemctl
等工具检查运行的进程和服务状态。
4. 网络诊断
- 使用
ping
、traceroute
和netstat
等工具检查网络连接和端口状态。
5. 具体故障排查步骤
内存泄漏故障排查
- 症状:JVM抛出
java.lang.OutOfMemoryError
异常,服务响应缓慢或不响应业务请求。 - 可能原因:没有足够的堆空间、对象活动时间过长、应用程序缓存过多、内存泄漏、JVM错误未能执行完整的GC、内存碎片。
- 排查步骤:
- 获取应用进程号:
ps -ef | grep 应用名
- 查看JVM堆使用情况、垃圾回收情况:
jstat -gcutil pid 100010
(时间间隔1000ms,输出10次) - 开启OOM快照:在启动参数里加
-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump.hprof
- 查看方法栈信息:
jstack -l pid /path/to/jstack.txt
- 查看JVM内存分配及使用情况:
jmap -heap pid /path/to/jmapHeap.txt
- 使用内存分析工具(如Memory Analyzer (MAT))分析堆转储文件。
- 获取应用进程号:
服务器挂起故障排查
- 症状:请求未得到处理,服务器表现为不执行任何操作或处理请求时间越来越长。
- 可能原因:配置的线程数不足、垃圾回收花费太多时间、JVM在代码优化期间挂起、应用程序死锁、JDBC死锁、所有线程都在等待对远程JVM的RMI调用响应、JSP编译、JSP的Servlet时间设置不当。
- 排查步骤:
- 执行
ping
命令检查服务器是否响应。 - 使用
-verbose:gc
参数重新启动服务器,检查是否运行GC。 - 登录控制台查看执行线程的运行情况:
Domainname-servers-servername-monitoring-General-Monitor All Active Queues
。 - 抓取故障时刻的线程信息:
jstack pid | kill -3 pid
。 - 利用工具分析线程信息。
- 执行
6. 常见错误及解决方法
- 内存不足:增加JVM堆空间,优化应用程序代码,减少内存泄漏。
- 配置错误:检查WebLogic配置文件(如
config.xml
)是否正确。 - 许可证问题:确保WebLogic许可证有效且配置正确。
- 依赖项问题:检查所有依赖的软件或库是否正确安装和配置。
7. 性能调优
- 检查频繁的标准输出或日志:减少日志操作,关闭不必要的日志输出。
- 内存设置:根据服务器CPU个数设置合适的堆内存大小,一般建议正式域设置为
-Xms1024m -Xmx1024m
。 - 线程数优化:根据服务器CPU个数调整线程数,一般每个CPU可负担25个线程,最好不要超过50个。
通过以上步骤,你可以系统地排查和解决CentOS上WebLogic的故障,确保系统的稳定性和可靠性。