首页主机资讯centos如何解决weblogic内存溢出

centos如何解决weblogic内存溢出

时间2025-12-02 13:25:04发布访客分类主机资讯浏览804
导读:CentOS上WebLogic内存溢出的定位与解决 一、快速判断与定位 确认异常类型:查看 WebLogic 服务器日志与 stdout/stderr。若日志中出现 java.lang.OutOfMemoryError: Java hea...

CentOS上WebLogic内存溢出的定位与解决

一、快速判断与定位

  • 确认异常类型:查看 WebLogic 服务器日志stdout/stderr。若日志中出现 java.lang.OutOfMemoryError: Java heap space,多为Java堆不足;若提示 native OutOfMemoryError 或进程被 SIGABRT 终止,多为堆外/本地内存不足(如线程栈、Direct Memory、JNI、第三方本地库等)。同时检查 AdminServer 日志目录…/user_projects/domains/< 你的域> /servers/AdminServer/logs
  • 打开GC日志以判断是配置不足还是泄漏:在启动参数中加入
    -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/path/gc_.log,用 HPJmeter/GCViewer 等工具查看 GC 频率与回收效果。稳定性测试中,若 GC/Full GC 时间占比 > 5%Full GC 后堆使用仍呈线性增长,通常意味着配置不合理或存在泄漏。
  • 初步判定后,再决定是“调参扩容”还是“查泄漏/堆外占用”。

二、Java堆溢出 Java heap space 的处理

  • 合理设置堆大小:在 setDomainEnv.sh 或管理控制台“服务器启动”中设置 -Xms-Xmx(建议两者等值,避免运行期扩缩堆带来的抖动),例如 -Xms2g -Xmx2g。一般应用可先给到 2G,大型应用可到 4G 或更高,再结合 GC 日志与压测微调。
  • 生成并分析堆转储:在 OOM 时生成 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/dump.hprof,用 Eclipse MAT 分析支配树与泄漏疑点。
  • 调整新生代与回收器:通过 -XX:NewRatio=N 调整新生代/老年代比例;在 JDK 8 可评估 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC(低延迟场景),并持续用 jstat/jconsole/VisualVM 观察停顿与回收效果。
  • 应用侧治理:重点排查会话膨胀缓存无界增长未关闭资源(JDBC Statement/ResultSet、JNDI、JMS 等),并优化线程池与连接池配置,避免对象长期驻留堆内。

三、堆外内存与系统层面的排查与优化

  • 识别堆外问题:若 OOM 消息出现在 stdout/stderr 且伴随 native OutOfMemoryErrorSIGABRT,或观察到 RSS 接近/超过物理内存+Swap、进程虚拟内存持续增长,多为堆外问题(线程栈、Direct Memory、JNI、mmap、第三方本地库等)。
  • 系统资源与参数:
    • 适度降低 vm.swappiness(如 10),减少换页;必要时调整 vm.dirty_ratio 等脏页回写参数。
    • 检查 ulimit -u/-v(进程/虚拟内存上限)、容器/虚拟化配额;必要时提升或优化部署拓扑。
    • 监控 RSS/VSZ 与 GC 日志并行观察,确认是否“堆外持续增长”。
  • 代码与依赖:排查 JNI/本地库、第三方驱动、代理类加载器泄漏、Direct ByteBuffer 使用不当等。

四、可直接套用的参数示例与落地步骤

  • 示例(JDK 8,HotSpot,放在 setDomainEnv.sh 的适当位置,如 WLS_MEM_ARGS_64BIT 区段):
    • 堆与GC:
      • -Xms2g -Xmx2g
      • -XX:NewRatio=2
      • -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
      • -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/opt/weblogic/domains/mydom/servers/mSrv1/logs/gc_mSrv1.log
      • -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/weblogic/domains/mydom/servers/mSrv1/logs/heapdump.hprof
    • 说明:若使用 JDK 11+-XX:PermSize/MaxPermSize 已移除,元空间由 -XX:MetaspaceSize/-XX:MaxMetaspaceSize 控制;CMS 在新版本可能不可用,需改用 G1/ZGC
  • 落地步骤:
    1. 备份并编辑 setDomainEnv.sh;2) 重启受影响的 AdminServer/受管服务器;3) 复现问题并收集 GC 日志/堆转储;4) 用 MAT/HPJmeter 分析并优化代码或参数;5) 回归压测,确认 GC 时间占比 < 5% 且无持续增长趋势。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos如何解决weblogic内存溢出
本文地址: https://pptw.com/jishu/761208.html
centos环境weblogic性能如何提升 centos inotify如何进行数据可视化

游客 回复需填写必要信息