【问题标题】:Weblogic 10.3.6 generates empty heapdump on OutOfMemoryErrorWeblogic 10.3.6 在 OutOfMemoryError 上生成空堆转储
【发布时间】:2018-09-05 08:01:32
【问题描述】:

由于部署在服务器上的 Web 应用程序生成 OutOfMemoryError,我正在尝试从 Weblogic 10.3.6 生成完整的堆转储。

我设置了以下启动脚本:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump

当 OutOfMemoryError 发生时,Weblogic 在/path/to/heapdump 文件夹中生成一个空 hprof 文件(0 字节大小),并且没有任何反应:服务器保持在 RUNNING 模式,即使不再可访问。 java 进程还活着,但处理器的百分比为 0%。

甚至 server.out 日志似乎完全冻结,没有任何 OutOfMemoryError 痕迹。

配置有什么问题?

【问题讨论】:

    标签: weblogic weblogic11g heap-dump


    【解决方案1】:

    或许您可以使用 Java Flight Recorder 来保存事件并检查哪些对象正在生成 OOM。

    (任何分析器都应该可以工作)。

    【讨论】:

      【解决方案2】:

      去过那里 :( 。我记得当时我们发现这有点合乎逻辑,因为没有足够的内存用于正常操作,JVM 也无法自动找到足够的内存来创建堆转储。如果内存对我有用好吧,当时我们做了两件事来调试内存泄漏。首先,我们很“幸运”,问题经常发生,因此可以进行密切的手动监控(监控 gc.log 以寻找重复的 FullGC 和监控控制台中的性能选项卡)。知道问题何时开始,我们正在执行一些 kill -3 来手动获取转储。我们还使用 jstack {PID}(Linux 上的 JDK 1.6)运气好。有了这些,当时,开发人员能够识别出内存泄漏。希望对您有所帮助。

      【讨论】:

      • 我试图从应用程序端调查 OutOfMemory 的原因,而不是从服务器效应。无论如何感谢您的建议!
      【解决方案3】:

      好的,您的配置看起来不错。您可能想检查 weblogic 进程用户是否有权编辑堆转储文件。

      您可以通过 Java 工具进行堆转储: JAVA_HOME/bin/jmap -dump:format=b,file=path_of_the_file

      %JROCKIT_HOME%\bin\jrcmd hprofdump 文件名=path_of_the_file

      【讨论】:

        猜你喜欢
        • 2018-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-01
        • 2013-12-29
        相关资源
        最近更新 更多