精华内容
下载资源
问答
  • 作为 Linux 运维工程师,在日常工作中我们会遇到 Linux服务器上出现CPU负载达到100%居不下的情况,如果CPU 持续跑,则会影响业务系统的正常运行,带来企业损失。 很多运维的同学遇到这种状况往往会不知所措,...
  • linux CPU占用率高

    2019-03-06 08:51:37
    如下图:top命令查看,linux总的CPU占用率很高,但是单进程没有CPU占用率高的,这怎么解决?

    如下图:top命令查看,linux总的CPU占用率很高,但是单进程没有CPU占用率高的,这怎么解决?

    展开全文
  • linux控制cpu占用率

    2018-01-30 14:09:47
    Linux平台下通过程序控制cpu占用率,最好在空闲的机器上测试
  • Linux CPU占用率过高时问题排查

    万次阅读 2019-04-11 12:13:46
    1.查看CPU占用率高的进程 1.1> top 1.2> 用ps -eo pid,pcpu | sort -n -k 2 2.确定高cpu消耗的线程 2.1>top -H 2.2>ps H -eo pid,tid,pcpu | sort -n -k 3 3.查看进程的线程 3.1>pstree -p ...

    1.查看CPU占用率高的进程
        1.1> top
        1.2> 用ps -eo pid,pcpu | sort -n -k 2 
        
    2.确定高cpu消耗的线程
        2.1>top -H
        2.2>ps H -eo pid,tid,pcpu | sort -n -k 3
        
    3.查看进程的线程
        3.1>pstree -p pid
        3.2>查看线程的相信信息:cat /proc/进程号/task/线程号/status
        
    4.实时线程进程的资源占用信息
        4.1>top -H -p pid
        
    5.查看该进程下的所有线程
        5.1>ps -efL | grep pid
        5.2>根据pid,查找占用cpu较高的线程
            ps -mp pid -o THREAD,tid,time
    6.使用jstack定位线程堆栈信息,精确找到异常代码
        6.1>查看某进程下占用CPU较高的线程:ps p 替换进程号 -L -o pcpu,pid,tid,time,tname,cmd
            

    %CPU   PID   TID     TIME TTY      CMD
             0.0  1538  1538 00:00:00 ?        java -classpath .:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:lib/adsl.jar:lib/commons-beanutils-1.8
            97.1  1538  1539 04:39:56 ?        java -classpath .:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:lib/adsl.jar:lib/commons-beanutils-1.8
             0.1  1538  1540 00:00:25 ?        java -classpath .:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:lib/adsl.jar:lib/commons-beanutils-1.8
             0.0  1538  1541 00:00:00 ?        java -classpath .:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:lib/adsl.jar:lib/commons-beanutils-1.8
             0.0  1538  1542 00:00:00 ?        java -classpath .:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:lib/adsl.jar:lib/commons-beanutils-1.8
             0.0  1538  1543 00:00:00 ?        java -classpath .:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:lib/adsl.jar:lib/commons-beanutils-1.8
             0.1  1538  1544 00:00:33 ?        java -classpath .:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:lib/adsl.jar:lib/commons-beanutils-1.8
             0.0  1538  1545 00:00:12 ?        java -classpath .:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:lib/adsl.jar:lib/commons-beanutils-1.8
             0.0  1538  1546 00:00:00 ?        java -classpath .:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:lib/adsl.jar:lib/commons-beanutils-1.8
             0.5  1538  1547 00:01:43 ?        java -classpath .:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:lib/adsl.jar:lib/commons-beanutils-1.8
             0.0  1538  7170 00:00:00 ?        java -classpath .:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:lib/adsl.jar:lib/commons-beanutils-1.8


        6.2>将获取的线程号(十进制数)转换成十六进制
            printf "%x\n" 1539
            结果:603
        6.3>结合进程号和线程号,利用jstack查到异常代码所在行
            jstack -l 1538| grep 0x603 -A 10
            结果:
            

    [root@cloud ~]# jstack -l 1538| grep 0x603 -A 10
            "main" #1 prio=5 os_prio=0 tid=0x00007f0088008800 nid=0x603 runnable [0x00007f008ca04000]
               java.lang.Thread.State: RUNNABLE
                at com.xxxx.xxxx.tester.Pppoe.main(Unknown Source)
    
               Locked ownable synchronizers:
                - None
    
            "VM Thread" os_prio=0 tid=0x00007f008806d000 nid=0x604 runnable         "VM Periodic Task Thread" os_prio=0 tid=0x00007f00880c0000 nid=0x60b waiting on condition

        此时,就可以看到占用CPU的程序了。
            
        6.4>将信息输出到文件
            jstack -l 1538 > 1538.pid
            使用vi查看。
            
        6.5>注意:需要在多个时间段提出多个 Thread Dump信息,然后综合进行对比分析,单独分析一个文件是没有意义的
        
            
        脚本(cpu飙高时):
        

    #!/bin/bash
        #
        # 当JVM占用CPU特别高时,查看CPU正在做什么
        # 可输入两个参数:1、pid Java进程ID,必须参数  2、打印线程ID上下文行数,可选参数,默认打印10行
        #
    
        pid=$1
    
        if test -z $pid
        then
         echo "pid can not be null!"
         exit
        else
         echo "checking pid($pid)"
        fi
    
        if test -z "$(jps -l | cut -d '' -f 1 | grep $pid)"
        then
         echo "process of $pid is not exists"
         exit
        fi
    
        lineNum=$2
        if test -z $lineNum
        then
            $lineNum=10
        fi
    
        jstack $pid >> "$pid".bak
    
        ps -mp $pid -o THREAD,tid,time | sort -k2r | awk '{if ($1 !="USER" && $2 != "0.0" && $8 !="-") print $8;}' | xargs printf "%x\n" >> "$pid".tmp
    
        tidArray="$( cat $pid.tmp)"
    
        for tid in $tidArray
        do
            echo "******************************************************************* ThreadId=$tid **************************************************************************"
            cat "$pid".bak | grep $tid -A $lineNum
        done
    
        rm -rf $pid.bak
        rm -rf $pid.tmp
        

    参考:https://www.jianshu.com/p/90579ec3113f

    展开全文
  • // CPU占用率计算原理:// 1、读取/proc/pid/stat文件,其中记录了从开机到现在,本进程所占用的CPU时间(单位jiffies)// 2、然后再读取/proc/stat文件,其中记录了从开机到现在,系统所占用的CPU时间(单位jiffies...
  • 步骤 1....在telnet终端上运行”top –d 1”,查看哪个pid的线程CPU占有最高,记下这个值。 步骤 4.按’q’退出top,或者另外再起一个telnet终端登录单板。 步骤 5.在telnet终端上运行gdb,不需要带

    原文出处:https://www.ebaina.com/articles/140000003262

    步骤 1.在单板上运行telnetd&,打开telnet服务。

    步骤 2.运行应用程序,在程序正常运行的状态下(不要按CTRL+Z把程序放到后台),telnet登录单板。

    步骤 3.在telnet终端上运行”top –d 1”,查看哪个pid的线程CPU占有率最高,记下这个值。

    步骤 4.按’q’退出top,或者另外再起一个telnet终端登录单板。

    步骤 5.在telnet终端上运行gdb,不需要带任何参数,进入gdb命令行后,输入“attach pid”,这里的pid指步骤3中记录下的pid的值。Attach完成后,输入bt full,查看堆栈信息,一般情况下,堆栈的最顶端(最先打印出来的那几个函数)就是CPU占用最高的那个线程的函数。检查一下这个线程的循环里面是否有没有释放CPU的操作,加上usleep(20000)或者使用其他方式在这个线程里面出让CPU。

    步骤 6.重新编译程序,验证CPU占用率是否有下降,如果没有,重复步骤 2至步骤 6。

    展开全文
  • 本文介绍了Linux下查看某一进程的CPU占用率的方法。
  • LinuxCPU占用率高分析方法

    千次阅读 2018-07-31 10:41:17
    一、可能有线程一直占用CPU资源 1. 先通过 ps 查看进程状态,找出进程的PID(8209)。 2.jstack -l 8209 > /usr/local/work/...4. 通过top -H -p 8209 命令查看对应进程是哪个线程占用CPU(eg:8308...

    一、可能有线程一直占用CPU资源

    1. 先通过 ps 查看进程状态,找出进程的PID(8209)。

    2.jstack -l 8209 > /usr/local/work/tomcat/8209.stack 导出PID对应的线程信息到文件

    3.对导出的线程文件下载本地做分析(可以文本打开)

    4. 通过top -H -p 8209 命令查看对应进程是哪个线程占用CPU过高(eg:8308)

    5.printf "%x\n" 8308 转换十进制为十六进制 此处为:2074。

    6.在导出的堆栈文件中搜索线程ID等于nid=0x2074的线程,此处即列出了该线程对应的类

    7.根据线程信息找到对应的类定位问题成功,可能的原因:

                         1.程序计算比较密集(大型矩阵的运算)

                         2.程序出现了死循环(while循环,hashmap死循环)

                         3. 程序逻辑结构的问题(数据库连接没有释放,连接池死锁,自旋锁一直占用着内存)

    二、查看磁盘使用率是不是超出正常范围。(df)

    三、查看内存使用率是否超出正常范围(free)

    四、jvm内存状态可能出现异常,可能频繁的GC原因。可以适当的改变堆栈比例。

    CPU利用率:1 - CPU空闲运行时间/总运行时间

    CPU负载(load):是指在一段时间内占用cpu时间的进程和等待cpu时间的进程数(处于被唤醒状态,不是wait状态),取决于CPU队列。

    如果现在出现CPU利用率很低,load很高的情况,可能是IO密集型的任务比较多。

    展开全文
  • linux CPU使用或负载过的处理思路1、查看系统CPU负载及使用的命令为:top vmstat top 命令:查看进程级别的cpu使用情况。 vmstat 命令:查看系统级别的cpu使用情况。 下面通过具体的图例来分析: 1.1 ...
  • Linux下解决CPU占用率100%问题的步骤

    千次阅读 2020-08-10 16:07:17
    确定cpu占用率高的进行ID - PID2. 查看进程中cpu占用率高的线程ID - TID3. 将线程ID - TID 转换成16进制 - XTID4. 将进程中的所有线程输出到文件5. 在输出文件中查找对应的线程ID 我们经常会解决一些cpu占用率100%...
  • linux下c/c++ 实现cpu使用查询,内存使用查询,当个程序使用查询 主要应用/proc/stat /proc/meminfo /proc/pid/stat /proc/pid/status 等文件中的内容进行计算
  • 关键词:top、perf、sar...top是最常用的查看系统资源使用情况的工具,包括CPU、内存等等资源。 这里主要关注CPU资源。 1.1 /proc/loadavg load average取自/proc/loadavg。 9.53 9.12 8.37 3/889 28165 前三个.
  • 目录 一:警告 二:查看cup占用 三:解决问题 1.首先停掉kdevtmpfsi的程序 2.删除Linux下的异常定时任务 ...有个最大的问题是:top命令查看自己服务器CPU运行情况,会发现kdevtmpfsi的进程,CPU使用为...
  • go读取Linuxcpu占用率、cpu温度、内存占用率及磁盘占用率
  • C++ 获取进程CPU占用率

    2020-08-26 03:25:28
    主要介绍了C++ 获取进程CPU占用率,需要的朋友可以参考下
  • linux cpu占用问题排查思路

    千次阅读 2019-04-18 13:12:43
    记录一次cpu占用排查思路 运营反馈线上环境app加载缓慢,于是查看了服务器cpu,发现cpu使用超高。 1,首先根据top命令,发现占用cpu最高的进程PID 如11291. 通过ps aux | grep PID命令,进一步查看当前进程的...
  • Linux 系统的 CPU 持续跑,则会对系统稳定性和业务运行造成影响 1.CPU 负载查看方法 top 得到进程pid5387,再查看cup最高的子进程PID top -H -p 5387 找到cpu最高的进程,查看其线程tid ps -mp 21117...
  • linux cpu使用测试

    2019-02-13 10:00:06
    linuxcpu利用常见脚本测试说明。
  • CPU负载查看方法: 使用vmstat查看系统维度的CPU负载 使用top查看进程维度的CPU负载 使用 vmstat 查看系统纬度的 CPU 负载: 可以通过 vmstat 从系统维度查看 CPU 资源的使用情况。 用法说明: 格式:...
  • 可以用下面的命令将 cpu 占用率高的线程找出来: ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%...
  • 注意:请不要下载这个,已经更新为V2版本,解决了一些错误。请下载V2版本 无需依赖第三方包,纯源码,支持Windows和Linux 走过路过不要错过
  • Linux 线程CPU占用率定位分析

    千次阅读 2020-07-21 23:01:55
    下边说下Linux调试过程中CPU占用率的情况怎么调试 CPU占用过,模拟CPU占用过的情况 先上一段代码: #include <iostream> #include <thread> #include <vector> int main(int argc, ...
  • 1.简介  一个程序,完成它预设的功能,并不能说明它是一个优良的程序。好的程序,应该是对资源的合理利用,亦或是 ...本文着重讲解一下在linux系统下,如何查看高CPU占用率的进程,线程。   2.python代码  为了
  • 观测CPU使用是否过; 观察running进程数与状态为R进程数量否一致,如果数量不一致,进行第二步。 第二步、针对R状态的进程进行分析 使用pidstat -p pid确认对应R状态的进程是否存在 使用ps aux .
  • Linux下某个进程CPU占用率高分析方法

    万次阅读 2018-04-19 17:26:48
    Linux下某个进程CPU占用率高分析方法通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用1. 通过top命令找到可疑进程PID从上面命令中可以看出java进程CPU利用率一直保持100%,稳居不下,找到...
  • Linux_CPU占用率原理与精确度分析
  • 最近检查服务器,突然发现有一台的CPU占用率非常。特此记录定位异常代码的步骤: 1. 使用top命令定位异常进程。可以看见12836的CPU和内存占用率都非常 2. 使用top -H -p 进程号查看异常线程 3. 使用printf "%x...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,007
精华内容 32,802
关键字:

linuxcpu占用率高

linux 订阅