JVM OOM文件储存方案

OOM-kill就是out-of-memory,在linux内核中有一层保护机制,用于避免linux在内存不足的时候不至于严重的问题,把无关紧要的进程杀掉。

然而,有的时候我们的应用程序被OOM killer杀掉之后我们需要进行问题的排查。我们可以通过分析dump日志来定位分析OOM异常。

怎么抓取Dump文件?

通过设置JVM参数实现。

相关参数

  • -XX:+HeapDumpOnOutOfMemoryError

    设置当首次遭遇内存溢出时导出此时堆中相关信息。

  • -XX:HeapDumpPath

    指定导出堆信息时的路径或文件名,比如:-XX:HeapDumpPath=/tmp/heapdump.hprof

具体使用

  • 通过Java命令启动时设置 Jvm 参数:
java -XX:+PrintFlagsFinal -XX:+UnlockExperimentalVMOptions \
    -XX:+UseCGroupMemoryLimitForHeap \
    -XX:+HeapDumpOnOutOfMemoryError \
    -XX:HeapDumpPath=/tmp/heapdump.hprof -jar app.jar
  • 如果使用容器部署Java应用:
docker run \
-e JAVA_OPTS="... -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof..." \
......
  • 另外,还要规定好容器平台从容器中采集/tmp/heapdump.hprof文件。
Copyright © www.daocloud.io 2019 all right reserved,powered by Gitbook修订时间: 2020-09-03 09:51:46

results matching ""

    No results matching ""