专栏首页D·技术专栏记一次内存泄漏排查

记一次内存泄漏排查

1、现象

httpclient一只read time out,使用jmx 产看内存是每天都在上升的。

2、保存现场

jstack pid > jstack.log 保存栈日志 jmap -dump:format=b,file=heap.log pid 保存堆日志

3、止血(如果不需要可先排查问题)

重启应用,回复服务,先止血。或者不影响服务的话可以直接连上服务器分析,不用分析日志。

4、分析排查

两种方案:

  • 分析日志 grep 'java.lang.Thread.State' jstack.log | wc -l 查看栈的数量 grep -A 1 'java.lang.Thread.State' jstack.log | grep -v 'java.lang.Thread.State' | sort | uniq -c |sort -n
  • 查看栈的状态 使用 MAT 分析 jvm heap ,下载堆 dump 文件 堆文件都是一些二进制数据,在命令行查看非常麻烦,Java 为我们提供的工具都是可视化的,Linux 服务器上又没法查看,那么首先要把文件下载到本地。 由于我们设置的堆内存为 4G,所以 dump 出来的堆文件也很大,下载它确实非常费事,不过我们可以先对它进行一次压缩。 gzip 是个功能很强大的压缩命令,特别是我们可以设置 -1 ~ -9 来指定它的压缩级别,数据越大压缩比率越大,耗时也就越长,推荐使用 -6~7, -9 实在是太慢了,且收益不大,有这个压缩的时间,多出来的文件也下载好了
  • 服务器上即时排查 1、top 查看服务器内存硬盘状况 2、jinfo pid 查看java 内存情况 3、jstat -gcutil [pid] 60000 查看从程序启动到现在进行了多少FGC,查看下old区百分比 jmap -histo:live [pid] >f 打印堆内存存活对象信息 vi f

5、定位问题

根据第四步分析出具体oom对象,发现一个connectManager被放到了map中,map的clear是跟httpclient shutDown一块的。但是项目原因,封装的阿里云 apachHttpclient,每次的ak和sk不一样所以每次创建一个新的client,所以map一直在增加没有被释放。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 交换排序之快速排序

    通常是以第一个元素为基准元素开始,然后从头部和尾部开始遍历,左边都是比基准元素小,右边是比基准元素大。

    OPice
  • Spring阶段性问题总结

    上篇文章我们看过了Spring解析、注册的对象的过程和源码,相信大家和我一样肯定有很多打问号的地方。下面针对我自己疑问的点作出的整理,看源码的时候不仅仅要知道是...

    OPice
  • JVM

       JVM是java virtual mechine 的缩写,是在真实的计算机基础上模拟计算机的各种功能的一种实现,JVM的本身对于计算机而言也是一个程序。 ...

    OPice
  • k8s实践(一):Centos7.6部署k8s(v1.14.2)集群

    Kubernetes这个名字源自希腊语,意思是“舵手”,也是“管理者”,“治理者”等词的源头。k8s是Kubernetes的简称(用数字『8』替代中间的8个字母...

    loong576
  • 美国起诉朝鲜男子发起索尼网络攻击和 WannaCry 勒索软件攻击

    据外媒报道,美国司法部日前对朝鲜一名人员发起诉讼,指控其涉嫌参与了2014年索尼影业的黑客攻击以及2017年具有毁灭性的WannaCry勒索软件攻击。早在201...

    周俊辉
  • Sqoop安装

    我上传到hadoop01这台服务器,因为hadoop01是我的hadoop集群的一个节点,也安装了hive

    CoderJed
  • python查看进程树

    用户2398817
  • per-CPU变量

    假设系统中有4个cpu, 同时有一个变量在各个CPU之间是共享的,每个cpu都有访问该变量的权限。

    233333
  • MySQL数据库:数据完整性及约束的应用

    主键:primary key 唯一键:unique 非空:not null 缺省:default 外键:foreign key

    Java_老男孩
  • openshift/origin学习记录(9)——S2I镜像定制(基于Git)

    参考《开源容器云Openshift》一书,制作一个Tomcat的S2I镜像(从Git下载代码,Maven打包,部署到Tomcat上。) 从Svn下载代码的...

    胡了了

扫码关注云+社区

领取腾讯云代金券