Linux下java进程CPU占用率高分析方法

在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况。这种情况发生时,我们怎么去找出原因并解决。

一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用

1. 通过top命令找到可疑进程PID

top - 09:37:18 up 70 days, 16:29,  2 users,  load average: 1.13, 1.04, 0.97
Tasks: 105 total,   1 running, 104 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.0%us,  4.9%sy,  0.0%ni, 93.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.5%st
Mem:   2067816k total,  1756680k used,   311136k free,   236340k buffers
Swap:   524284k total,   255508k used,   268776k free,   277040k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
24138 apache    20   0 1273m 384m 3668 S 103.3 19.0   1232:39 java
 3359 root      39  19  2704   36    0 S  0.3  0.0   4:39.34 gam_server
 6696 root      20   0 34148 1604  244 S  0.3  0.1   5:06.63 httpd
19254 root      20   0  785m 221m 3176 S  0.3 11.0   9:04.36 java
    1 root      20   0  2224   28    0 S  0.0  0.0   1:22.46 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      20   0     0    0    0 S  0.0  0.0   0:33.42 ksoftirqd/0
    5 root      20   0     0    0    0 S  0.0  0.0   0:00.03 kworker/u:0

从上面命令中可以看出java进程CPU利用率一直保持100%,稳居不下,找到PID 24138

2. 找出消耗资源最高的线程

top -H -p  24138 可以不用第一步,直接执行命令 top -H ,就可以查看到消耗资源最高的线程

top - 09:49:49 up 70 days, 16:41,  2 users,  load average: 1.01, 1.04, 1.00
Tasks:  72 total,   1 running,  71 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.6%us,  1.3%sy,  0.0%ni, 97.7%id,  0.1%wa,  0.0%hi,  0.0%si,  0.2%st
Mem:   2067816k total,  1760840k used,   306976k free,   236744k buffers
Swap:   524284k total,   253344k used,   270940k free,   279092k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
24167 apache    20   0 1273m 384m 3688 R 99.1 19.0   1169:43 java
24152 apache    20   0 1273m 384m 3688 S  2.0 19.0   0:28.58 java
24188 apache    20   0 1273m 384m 3688 S  2.0 19.0   4:56.69 java
24138 apache    20   0 1273m 384m 3688 S  0.0 19.0   0:00.00 java

3. 查看这个线程所有系统调用

strace -p 24167

通过这3步基本可以找出什么原因导致java进程占用那么高CPU资源。

Linux下java进程CPU占用率高分析方法的更多相关文章

  1. (转)Linux下java进程CPU占用率高-分析方法

    Linux下java进程CPU占用率高-分析方法 原文:http://itindex.net/detail/47420-linux-java-%E8%BF%9B%E7%A8%8B?utm_source ...

  2. Linux下java进程CPU占用率高分析方法(一)

    Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...

  3. Linux下java进程CPU占用率高-分析方法

    今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4%  mem:14.6%  ...

  4. Linux下java进程CPU占用率高分析方法(二)

    1. 通过 top 命令查看当前系统CPU使用情况,定位CPU使用率超过100%的进程ID:2. 通过 ps aux | grep PID 命令进一步确定具体的线程信息:3. 通过 ps -mp pi ...

  5. CPU占用率高分析方法步骤[转载]

    由于涉及到私有代码,所有图片都隐去 1.执行TOP命令,确认CPU占用较高的进程PID 根据top命令,发现PID为8691的Java进程占用CPU高达3858%,出现故障 2.确认该进程中CPU占用 ...

  6. Linux下CPU占用率高分析方法

    一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用1. 通过top命令找到可疑进程PID top - 09:37:18 up 70 days, 16:29 ...

  7. Linux下分析某个进程CPU占用率高的原因

      Linux下分析某个进程CPU占用率高的原因 通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用  1.top 查到占用cpu高的进程pid 2.查看该pid的线程 ...

  8. Java CPU占用率高分析

    首先,通过top命令找出CPU占用率高的进程: 然后,通过ps -o THREAD,tid,time -mp 2066命令找出执行时间最长的线程的TID 将有问题的TID转为16进制格式: print ...

  9. 查看Windows下引起Oracle CPU占用率高的神器-qslice

    前言: qslice是一个win2000的工具包,能分析进程的cpu占用率,我们用于分析oracle的性能 这是绿色的软件无需安装. 我们经常会碰到oracle的CPU占用居高不下,无法快速定位到问题 ...

随机推荐

  1. Azure Application Gateway (2) 面向公网的Application Gateway

    <Windows Azure Platform 系列文章目录> 本章将介绍如何创建面向公网的Application Gateway,我们需要准备以下工作: 1.创建新的Azure Reso ...

  2. 【十大经典数据挖掘算法】C4.5

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 决策树模型与学习 决策树(de ...

  3. 使用QUnit进行自动化单元测试

    前言 前阵子由于项目需求接触了java的单元测试JUnit,就顺带着学习了前端的单元测试:Qunit. 既然跟测试有关,不妨介绍一下测试中的黑盒测试.白盒测试以及单元测试. 1.黑盒测试:所谓的黑盒, ...

  4. MapReduce Shuffle过程

    MapReduce Shuffle 过程详解 一.MapReduce Shuffle过程 1. Map Shuffle过程 2. Reduce Shuffle过程 二.Map Shuffle过程 1. ...

  5. 【原创】HDFS介绍

    一.            HDFS简介 1.    HDFS全称 Hadoop Distributed FileSystem,Hadoop分布式文件系统. Hadoop有一个抽象文件系统的概念,Ha ...

  6. 异步编程系列第04章 编写Async方法

    p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...

  7. 通过HttpListener实现简单的Http服务

    使用HttpListener实现简单的Http服务 HttpListener提供一个简单的.可通过编程方式控制的 HTTP 协议侦听器.使用它可以很容易的提供一些Http服务,而无需启动IIS这类大型 ...

  8. 在Python应用中使用MongoDB

    Python是开发社区中用于许多不同类型应用的强大编程语言.很多人都知道它是可以处理几乎任何任务的灵活语言.因此,在Python应用中需要一个什么样的与语言本身一样灵活的数据库呢?那就是NoSQL,比 ...

  9. 搭建自己的apache tomcat php mysql 环境和WordPress站点制作

    无论你是web开发人员,还是程序员,拥有一个自己的站点总没有坏处,下面我们就从搭建wordpress的环境来说吧. 1.首先wordpre是用的php语言,所以需要php环境,最基本的数据库也不能缺少 ...

  10. 从零开始学 Java - Spring MVC 实现跨域资源 CORS 请求

    论职业的重要性 问:为什么所有家长都希望自己的孩子成为公务员? 答:体面.有权.有钱又悠闲. 问:为什么所有家长都希望自己的孩子成为律师或医生? 答:体面.有钱.有技能. 问:为什么所有家长都不怎么知 ...