美文网首页
记一次OOM排查

记一次OOM排查

作者: captain_fu | 来源:发表于2018-01-11 10:54 被阅读0次

背景:

之前做了一个小型的项目,功能比较简单,大致是从aliyun的oss上下载文件,然后把文件传输给一个HTTP服务。

问题:

项目的下载文件和调用HTTP服务的频率约为10W每月。项目上线一个多月之后,生产出现了一次OOM。

分析过程:

1. 对生产的JVM进行dump,看了下leak suspect。发现有大量的PoolingHttpClientConnectionManager对象没有被回收,数量和文件下载次数基本一致。

2. 在项目代码中查了下这个类,发现这个类属于httpclient包,查看了下项目中的使用httpclient的地方,怀疑自己的使用方式有问题。按照httpclient官网的example改写了httpclient工具类。再次上生产去执行,发现Young GC之后,PoolingHttpClientConnectionManager还是没有被回收,老年代的空间一直在增长。

3. 回收仔细思考了下,应该查询到底是什么对象持有这些类的引用,导致对象没有被回收。

4. 查看了GCroot到这些对象的引用链关系,发现被一个oss的相关对象所持有。

5. 分析了下oss相关的代码,发现oss也依赖了httpclient,并且项目中使用oss的地方,没有将ossClient进行shutdown,导致资源一直没有被回收。修改了oss相关代码,文件下载完毕后,调用OSSClient.shutdown。再次上生产执行,每次Young GC之后,对象被回收,老年代基本不再增长。

相关文章

  • 再一次oom的记录

    上一次oom的记录在一次排查OOM的总结,这次oom的排查大概花了一天不到,和leader一起,我这边主要是根据后...

  • 记一次OOM排查

    背景: 之前做了一个小型的项目,功能比较简单,大致是从aliyun的oss上下载文件,然后把文件传输给一个HTTP...

  • OOM排查

    http://ifeve.com/one-java-oom/

  • OOM排查

    一般CPU100%疯狂GC,都是死循环的锅,那怎么排查呢? 1):先进服务器,用top -c 命令找出当前进程的运...

  • zookeeper oom

    一:问题: zookeeper oom挂掉之后重启及选举失败 二:排查: 2.1 oom信息: 其中,FileTx...

  • 2. Interview-JVM&GC

    JVM知识图谱 1 怎么解决OOM?/ 怎么排查OOM?/ JVM调优 参考:https://blog.csdn....

  • JVM OOM 排查

    1、jdk 自带基础工具 2、MAT 分析dump 3、VM 实时监控 4 、遇到过OOM 内存溢出有哪些 1、J...

  • JVM OOM 排查

    1、jdk 自带基础工具 2、MAT 分析dump 3、VM 实时监控 4 、遇到过OOM 内存溢出有哪些 1、J...

  • OOM问题排查

    JVM参数设置 在JAVA_OPTIONS变量中增加参数 说明: -XX:+HeapDumpOnOutOfMemo...

  • 排查线上OOM

    jvm开启时,一定要配置如此内容。-XX:+HeapDumpOnOutOfMemoryError // 出现O...

网友评论

      本文标题:记一次OOM排查

      本文链接:https://www.haomeiwen.com/subject/gwdznxtx.html