1、通过top 查看具体是哪个进程占用内存较多

  1. Tasks: 65 total, 1 running, 64 sleeping, 0 stopped, 0 zombie
  2. %Cpu(s): 2.0 us, 1.0 sy, 0.0 ni, 96.3 id, 0.3 wa, 0.0 hi, 0.3 si, 0.0 st
  3. KiB Mem : 1016168 total, 63544 free, 824060 used, 128564 buff/cache
  4. KiB Swap: 2047996 total, 1612356 free, 435640 used. 49916 avail Mem
  5.  
  6. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  7. 25894 www 20 0 3080304 757036 3252 S 3.3 74.5 25:55.03 java
  8. 1 root 20 0 43300 2180 1340 S 0.0 0.2 3:20.35 systemd
  9. 2 root 20 0 0 0 0 S 0.0 0.0 0:00.43 kthreadd
  10. 3 root 20 0 0 0 0 S 0.0 0.0 12:44.14 ksoftirqd/0
  11. 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
  12. 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0

2、定位线程问题(通过命令查看PID 为25894 进程的线程情况),命令:# ps p 25894 -L -o pcpu,pmem,pid,tid,time,tname,cmd

  1. # ps p 25894 -L -o pcpu,pmem,pid,tid,time,tname,cmd
  2.  
  3. %CPU %MEM PID TID TIME TTY CMD
  4. 0.0 74.4 25894 25894 00:00:00 ? /App/java/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/App/tomcat_jtws-opefront/conf/logging.properties -Djava.util.logging.manager=org.ap
  5. 0.0 74.4 25894 25896 00:00:00 ? /App/java/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/App/tomcat_jtws-opefront/conf/logging.properties -Djava.util.logging.manager=org.ap
  6. 0.1 74.4 25894 25897 00:01:09 ? /App/java/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/App/tomcat_jtws-opefront/conf/logging.properties -Djava.util.logging.manager=org.ap
  7. 0.0 74.4 25894 25898 00:00:00 ? /App/java/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/App/tomcat_jtws-opefront/conf/logging.properties -Djava.util.logging.manager=org.ap
  8. 0.0 74.4 25894 25899 00:00:00 ? /App/java/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/App/tomcat_jtws-opefront/conf/logging.properties -Djava.util.logging.manager=org.ap
  9. 0.0 74.4 25894 25900 00:00:00 ? /App/java/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/App/tomcat_jtws-opefront/conf/logging.properties -Djava.util.logging.manager=org.ap
  10. 0.0 74.4 25894 25901 00:00:00 ? /App/java/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/App/tomcat_jtws-opefront/conf/logging.properties -Djava.util.logging.manager=org.ap
  11. 0.0 74.4 25894 25902 00:00:00 ? /App/java/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/App/tomcat_jtws-opefront/conf/logging.properties -Djava.util.logging.manager=org.ap
  12. 0.1 74.4 25894 25903 00:01:18 ? /App/java/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/App/tomcat_jtws-opefront/conf/logging.properties -Djava.util.logging.manager=org.ap
  13. 0.0 74.4 25894 25904 00:00:14 ? /App/java/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/App/tomcat_jtws-opefront/conf/logging.properties -Djava.util.logging.manager=org.ap
  14. .....................................以下部分省略.....................................
  15.  
  16. # ps p 25894 -L -o pcpu,pmem,pid,tid,time,tname,cmd |wc -l
  17. 101

由此可以看到这个PID:25894的进程产生了很多线程。接下来就可以通过jstack查看内存使用的堆栈,具体可以执行 ps p 25894 -L -o pcpu,pmem,pid,tid,time,tname,cmd |wc -l 来查具体有多少线程.

3、将PID为25894的堆栈信息打印到jstack.log中,命令: #jstack -l 25894 > jstack.log

4、查看日志,有很多WAITING & TIMED_WAITING 状态的日志信息,具体需要研发查看一下代码的情况;

  1. #cat jstack.log |grep -E 'WAITING|TIMED_WAITING'
  2. java.lang.Thread.State: TIMED_WAITING (parking)
  3. java.lang.Thread.State: TIMED_WAITING (parking)
  4. java.lang.Thread.State: TIMED_WAITING (parking)
  5. java.lang.Thread.State: TIMED_WAITING (on object monitor)
  6. java.lang.Thread.State: TIMED_WAITING (on object monitor)
  7. java.lang.Thread.State: TIMED_WAITING (parking)
  8. java.lang.Thread.State: TIMED_WAITING (parking)
  9. java.lang.Thread.State: TIMED_WAITING (parking)
  10. java.lang.Thread.State: TIMED_WAITING (parking)
  11. java.lang.Thread.State: TIMED_WAITING (parking)
  12. java.lang.Thread.State: TIMED_WAITING (parking)
  13. java.lang.Thread.State: TIMED_WAITING (parking)
  14. java.lang.Thread.State: WAITING (parking)
  15. java.lang.Thread.State: WAITING (parking)
  16. java.lang.Thread.State: TIMED_WAITING (on object monitor)
  17. java.lang.Thread.State: WAITING (on object monitor)
  18. java.lang.Thread.State: WAITING (on object monitor)
  19. java.lang.Thread.State: TIMED_WAITING (parking)
  20. java.lang.Thread.State: TIMED_WAITING (parking)
  21. java.lang.Thread.State: TIMED_WAITING (parking)
  22. java.lang.Thread.State: TIMED_WAITING (parking)
  23. java.lang.Thread.State: TIMED_WAITING (parking)
  24. java.lang.Thread.State: TIMED_WAITING (parking)
  25. java.lang.Thread.State: TIMED_WAITING (parking)
  26. java.lang.Thread.State: TIMED_WAITING (parking)
  27. java.lang.Thread.State: TIMED_WAITING (parking)
  28. java.lang.Thread.State: TIMED_WAITING (parking)
  29. java.lang.Thread.State: TIMED_WAITING (parking)
  30. java.lang.Thread.State: TIMED_WAITING (parking)
  31. java.lang.Thread.State: TIMED_WAITING (parking)
  32. java.lang.Thread.State: TIMED_WAITING (parking)
  33. java.lang.Thread.State: TIMED_WAITING (parking)
  34. java.lang.Thread.State: TIMED_WAITING (parking)
  35. java.lang.Thread.State: TIMED_WAITING (parking)
  36. java.lang.Thread.State: TIMED_WAITING (parking)
  37. java.lang.Thread.State: TIMED_WAITING (parking)
  38. java.lang.Thread.State: TIMED_WAITING (parking)
  39. java.lang.Thread.State: TIMED_WAITING (parking)

后经研发检查代码并升级程序至新版本,问题解决。  

参考链接:https://www.javatang.com/archives/2017/10/25/36441958.html#TIMED_WAITING  

Java进程占用系统内存较高的排查方法的更多相关文章

  1. java进程占用系统内存高,排查解决

    转自:http://blog.51cto.com/chengxiaobai/2052530?cid=695076 故障:最近收到生产服务器的报警短信以及邮件,报警内容为:内存使用率高于70%. 使用t ...

  2. java进程占用系统内存高,排查方法

    查看所有内存占用情况 top 定位线程问题(通过命令查看16764 进程的线程情况) ps p -L -o pcpu,pmem,pid,tid,time,tname,cmd 计数 ps p -L -o ...

  3. java进程占用CPU资源过高分析脚本

    #!/bin/bash #输入占用CPU较高的进程号 pid=$ if [ -z $pid ] then echo "PID is NULL" exit fi #找到该进程中占用较 ...

  4. Java进程占用内存过高,排查解决方法

    最近收到邮件报警,说内存使作率达到84%.如下图: 解决方法: A:可能是代码原因导致的问题: 1.使用命令:top 查看当前进程的状态 2.从上图可以看到PID:916的java进程占用内存较大.定 ...

  5. 万答#3,MGR最佳配置参考,PFS里的监测指标要全开吗,mysqld进程占用内存过高怎么排查

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 问题1,有推荐的MGR运行最佳配置参考吗 在「3306π」社区广州站5月22日的分享会上,万里数据库CTO娄帅给出了他建议 ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. Java进程占用CPU资源过多分析

    问题描述: 生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析: 1,程序属于CPU密集型,和开发沟通 ...

  8. python 计算apache进程占用的内存大小以及占物理内存的比例

      目的:计算所有apache进程占用的内存大小以及占物理内存的比例: 思路:利用系统中/proc/meminfo的现有数据进行统计 1.pidof列出服务对应进程的PID [root@yanglih ...

  9. linux下查询进程占用的内存方法总结

    linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」.现在想要查询该进程占用的内存大小.linux命令行下有很多的工具进行查看,现总结常见的几种方 ...

随机推荐

  1. 【POJ2942】Knights of the Round Table(二分图 点双联通分量)

    题目链接 大意 给定\(N\)个点与\(M\)个关系,每个关系表示某两个点间没有直接的边相连,求不在所有奇环上的点的个数. (\(1\le N\le 1e3,1\le M\le 1e6\)) 思路 考 ...

  2. 有序取出Map集合的元素

    最近写到一个程序,返回了map,但是经过查阅资料,map是没有顺序的,各种查阅资料无果,最后自己写了这个方法.. 1,通过map集合的keySet()方法,获取到一个包含map所有key的Set集合 ...

  3. idea导入mavenJar、mavenWeb项目

    两种项目都是一样的,都是maven项目,所以主要是找到pom.xml,项目最好先放在idea的工作目录下,且工作目录最好为英文 1.打开idea,选择import project 2.把项目放到ide ...

  4. 用Express 创建项目

    1.Node.js Express 框架安装:npm install express --save在当前目录下创建一个node_modules 2.安装必要的中间件npm install body-p ...

  5. BUG严重等级分类标准

    1 编写目的 本文档是对独立测试阶段发现的缺陷(bug)按照严重等级进行分类,确保测试出的缺陷得到正确的理解,以方便缺陷的修改.回归测试工作可以顺利进行,同时也可以作为测试考核的依据. 2 适用范围 ...

  6. 利用 kubeasz 给 suse 12 部署 kubernetes 1.20.1 集群

    文章目录 1.前情提要 2.环境准备 2.1.环境介绍 2.2.配置静态网络 2.3.配置ssh免密 2.4.批量开启模块以及创建文件 2.5.安装ansible 2.5.1.安装pip 2.5.2. ...

  7. 猜猜我在哪里-linux查找命令

    文章目录 find findfs locate slocate which whereis pwd pwdx find: # 这是一个很强大的查找命令 findfs: # 依据卷标(LABEL)和UU ...

  8. vue的事件监听

    <div id="app"> <button type="button" @click="btnClick(a,$event)&qu ...

  9. [LeetCode]1365. 有多少小于当前数字的数字

    给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目. 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 ...

  10. 『无为则无心』Python面向对象 — 59、魔法方法

    目录 1.魔法方法__new__() 2.魔法方法__init__() 3.魔法方法__del__() 4.魔法方法__str__()和__repr__() 5.魔法方法__call__() 6.魔法 ...