在CentOS上部署和运行WebLogic时,可能会遇到各种故障。以下是一个详细的故障排查思路,帮助你快速定位和解决问题。
1. 确定故障类型
- 硬件问题:检查服务器硬件状态,如CPU、内存、磁盘空间等。
- 软件问题:检查WebLogic配置、日志文件、应用程序代码等。
- 网络问题:检查网络连接、端口状态等。
2. 查看日志文件
- 服务器日志:通常位于
/var/log/weblogic/
目录下,查看server.log
文件。
- 访问日志:如果使用HTTP/HTTPS访问WebLogic,默认位置在
/var/log/weblogic/access/
目录下,查看access.log
文件。
3. 检查进程和服务
- 使用
ps
、top
和systemctl
等工具检查运行的进程和服务状态。
4. 网络诊断
- 使用
ping
、traceroute
和netstat
等工具检查网络连接和端口状态。
5. 具体故障排查步骤
5.1 内存泄漏故障排查
- 症状: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))分析堆转储文件。
5.2 服务器挂起故障排查
- 症状:请求未得到处理,服务器表现为不执行任何操作或处理请求时间越来越长。
- 可能原因:配置的线程数不足、垃圾回收花费太多时间、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的故障,确保系统的稳定性和可靠性。