精华内容
下载资源
问答
  • linux查看线程cpu占用情况

    千次阅读 2015-10-31 14:37:31
    在搞服务器的时候有时候会遇到一些线程CPU占用100%的情况,这里记录一些查看方法以备不时之需。具体操作请看: 1、 ps -aef | grep TestTcpSV rickey 2932 1864 0 17:00 pts/0 00:00:00 ./TestTcpSV rickey 2999 ...

        在搞服务器的时候有时候会遇到一些线程CPU占用100%的情况,这里记录一些查看方法以备不时之需。具体操作请看:

    1、 ps -aef | grep TestTcpSV
    rickey    2932  1864  0 17:00 pts/0    00:00:00 ./TestTcpSV
    rickey    2999  2939  0 17:06 pts/1    00:00:00 grep TestTcpSV


    2、top -H -p 2932
    top - 17:07:31 up 24 days,  7:11,  2 users,  load average: 0.22, 0.28, 0.29
    Tasks:   5 total,   0 running,   5 sleeping,   0 stopped,   0 zombie
    Cpu(s): 10.5%us,  6.2%sy,  0.0%ni, 72.4%id, 10.2%wa,  0.0%hi,  0.7%si,  0.0%st
    Mem:   1808812k total,  1194496k used,   614316k free,   208688k buffers
    Swap:  3637240k total,    50248k used,  3586992k free,   732100k cached


      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
     2932 rickey    20   0 59864 1412 1180 S  0.0  0.1   0:00.00 TestTcpSV          
     2935 rickey    20   0 59864 1412 1180 S  0.0  0.1   0:00.00 TestTcpSV          
     2936 rickey    20   0 59864 1412 1180 S  0.0  0.1   0:00.00 TestTcpSV          
     2937 rickey    20   0 59864 1412 1180 S  0.0  0.1   0:00.00 TestTcpSV          
     2938 rickey    20   0 59864 1412 1180 S  0.0  0.1   0:00.00 TestTcpSV


    3、pstack 2932 (LWP 与 ID对应)
    Thread 5 (Thread 0xb6affb70 (LWP 2935)):
    #0  0x008c8424 in __kernel_vsyscall ()
    #1  0x00b319d6 in epoll_wait () from /lib/libc.so.6
    #2  0x08085450 in epoll_dispatch ()
    #3  0x08075209 in event_base_loop ()
    #4  0x08076079 in event_base_dispatch ()
    #5  0x0805ae64 in CTcpSVTask::Run() ()
    #6  0x0805c976 in CThreadPoolTask::Run() ()
    #7  0x0805b9ad in Run(void*) ()
    #8  0x00c1fa09 in start_thread () from /lib/libpthread.so.0
    #9  0x00b3115e in clone () from /lib/libc.so.6
    Thread 4 (Thread 0xb5effb70 (LWP 2936)):
    #0  0x008c8424 in __kernel_vsyscall ()
    #1  0x00b319d6 in epoll_wait () from /lib/libc.so.6
    #2  0x08085450 in epoll_dispatch ()
    #3  0x08075209 in event_base_loop ()
    #4  0x08076079 in event_base_dispatch ()
    #5  0x0805ae64 in CTcpSVTask::Run() ()
    #6  0x0805c976 in CThreadPoolTask::Run() ()
    #7  0x0805b9ad in Run(void*) ()
    #8  0x00c1fa09 in start_thread () from /lib/libpthread.so.0
    #9  0x00b3115e in clone () from /lib/libc.so.6
    Thread 3 (Thread 0xb52ffb70 (LWP 2937)):
    #0  0x008c8424 in __kernel_vsyscall ()
    #1  0x00b319d6 in epoll_wait () from /lib/libc.so.6
    #2  0x08085450 in epoll_dispatch ()
    #3  0x08075209 in event_base_loop ()
    #4  0x08076079 in event_base_dispatch ()
    #5  0x0805ae64 in CTcpSVTask::Run() ()
    #6  0x0805c976 in CThreadPoolTask::Run() ()
    #7  0x0805b9ad in Run(void*) ()
    #8  0x00c1fa09 in start_thread () from /lib/libpthread.so.0
    #9  0x00b3115e in clone () from /lib/libc.so.6
    Thread 2 (Thread 0xb48feb70 (LWP 2938)):
    #0  0x008c8424 in __kernel_vsyscall ()
    #1  0x00b319d6 in epoll_wait () from /lib/libc.so.6
    #2  0x08085450 in epoll_dispatch ()
    #3  0x08075209 in event_base_loop ()
    #4  0x08076079 in event_base_dispatch ()
    #5  0x0805ae64 in CTcpSVTask::Run() ()
    #6  0x0805c976 in CThreadPoolTask::Run() ()
    #7  0x0805b9ad in Run(void*) ()
    #8  0x00c1fa09 in start_thread () from /lib/libpthread.so.0
    #9  0x00b3115e in clone () from /lib/libc.so.6
    Thread 1 (Thread 0xb77af6d0 (LWP 2932)):
    #0  0x008c8424 in __kernel_vsyscall ()
    #1  0x00b319d6 in epoll_wait () from /lib/libc.so.6
    #2  0x08085450 in epoll_dispatch ()
    #3  0x08075209 in event_base_loop ()
    #4  0x08076079 in event_base_dispatch ()
    #5  0x08059909 in CTcpSV::Loop() ()
    #6  0x0805a9ba in CTcpSV::Start() ()
    #7  0x0804ac3d in main ()

    展开全文
  • 线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况,下面是一个很好用的脚本,可以快速导出每个线程的占用CPU情况,结合jstack日志,排查到具体线程类名。一、首先获得jvm的进程ID...

    线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况,下面是一个很好用的脚本,可以快速导出每个线程的占用CPU情况,结合jstack日志,排查到具体的线程类名。

    一、首先获得jvm的进程ID:

    ps -ef|grep java

    tomcat     374   372  1 11:45 ?        00:02:30 jsvc.exec -java-home /usr/java/latest -user tomcat -pidfile /usr/local/tomcat7/logs/tomcat7.pid -outfile /usr/local/tomcat7/logs/catalina-daemon.out -errfile &1 -classpath /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/commons-daemon.jar:/usr/local/tomcat7/bin/tomcat-juli.jar -Djava.util.logging.config.file=/usr/local/tomcat7/conf/logging.properties -Djava.awt.headless=true -Xmx10240m -XX:MaxPermSize=2096m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat7/endorsed -Dcatalina.base=/usr/local/tomcat7 -Dcatalina.home=/usr/local/tomcat7 -Djava.io.tmpdir=/usr/local/tomcat7/temp org.apache.catalina.startup.Bootstrap

    如上,我们知道PID为374,切换使用tomcat用户登录

    vi jkiller.sh 输入以下脚本:

    #!/bin/sh

    export LANG="zh_CN.UTF-8";

    export LC_ALL="zh_CN.UTF-8";

    LOG_FILE="/tmp/jkiller.log";

    JSTACK_FILE="/tmp/jstack.log";

    PID="$1";

    shift;

    i=0;

    j="$1";

    if [ -z "${j}" ]; then

    j=5;

    fi

    ps -mp ${PID} -o THREAD,tid,time | sort -rn > ${LOG_FILE};

    jstack ${PID} > ${JSTACK_FILE};

    for LINE in `cat ${LOG_FILE}|gawk -F '-' '{print $4}'|gawk -F ' ' '{print $1}'`

    do

    i=$(($i+1));

    if (($i>$j)); then

    break;

    fi;

    XPID=`printf "%x\n" ${LINE}`;

    echo -ne "\033[32m";

    echo ${XPID};

    echo -e "\033[34m";

    grep -A 10 "0x${XPID}" ${JSTACK_FILE};

    echo -e "\e[0m";

    done;

    执行该脚本:

    ./jkiller.sh 374

    该脚本将生成一个/tmp/jkiller.log 文件,里面为各个线程的cpu使用情况,里面带有tid,为线程ID,可以结合/tmp/jstack.log 文件,查看具体是某个线程.

    展开全文
  • 如何使用Linux Shell脚本查看Java线程的CPU使用情况?线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况。以下脚本可以快速导出每个线程的占用CPU情况,结合jstack日志,排查到具体...

    如何使用

    Linux Shell脚本查看Java线程的CPU使用情况?

    线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况。

    以下脚本可以快速导出每个线程的占用CPU情况,结合jstack日志,排查到具体的线程类名。

    一、首先获得jvm的进程ID:

    ps -ef|grep java

    tomcat 374 372 1 11:45 ? 00:02:30 jsvc.exec -java-home /usr/java/latest -user tomcat -pidfile /usr/local/tomcat7/logs/tomcat7.pid -outfile /usr/local/tomcat7/logs/catalina-daemon.out -errfile &1 -classpath /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/commons-daemon.jar:/usr/local/tomcat7/bin/tomcat-juli.jar -Djava.util.logging.config.file=/usr/local/tomcat7/conf/logging.properties -Djava.awt.headless=true -Xmx10240m -XX:MaxPermSize=2096m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat7/endorsed -Dcatalina.base=/usr/local/tomcat7 -Dcatalina.home=/usr/local/tomcat7 -Djava.io.tmpdir=/usr/local/tomcat7/temp org.apache.catalina.startup.Bootstrap

    如上,知道PID为374,切换使用tomcat用户登录。

    vi jkiller.sh 输入以下脚本:

    #!/bin/sh

    # www.jbxue.com

    #

    export LANG="zh_CN.UTF-8";

    export LC_ALL="zh_CN.UTF-8";

    LOG_FILE="/tmp/jkiller.log";

    JSTACK_FILE="/tmp/jstack.log";

    PID="$1";

    shift;

    i=0;

    j="$1";

    if [ -z "${j}" ]; then

    j=5;

    fi

    ps -mp ${PID} -o THREAD,tid,time | sort -rn > ${LOG_FILE};

    jstack ${PID} > ${JSTACK_FILE};

    for LINE in `cat ${LOG_FILE}|gawk -F '-' '{print $4}'|gawk -F ' ' '{print $1}'`

    do

    i=$(($i+1));

    if (($i>$j)); then

    break;

    fi;

    XPID=`printf "%x\n" ${LINE}`;

    echo -ne "\033[32m";

    echo ${XPID};

    echo -e "\033[34m";

    grep -A 10 "0x${XPID}" ${JSTACK_FILE};

    echo -e "\e[0m";

    done; 执行该脚本: ./jkiller.sh 374 该脚本将生成一个/tmp/jkiller.log 文件,里面为各个线程的cpu使用情况,里面带有tid,为线程ID,可以结合/tmp/jstack.log 文件,查看具体是某个线程。

    展开全文
  • 线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况,下面是一个很好用的脚本,可以快速导出每个线程的占用CPU情况,结合jstack日志,排查到具体线程类名。一、首先获得jvm的进程ID...

    线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况,下面是一个很好用的脚本,可以快速导出每个线程的占用CPU情况,结合jstack日志,排查到具体的线程类名。

    一、首先获得jvm的进程ID:

    代码如下:

    ps -ef|grep java

    tomcat     374   372  1 11:45 ?        00:02:30 jsvc.exec -java-home /usr/java/latest -user tomcat -pidfile /usr/local/tomcat7/logs/tomcat7.pid -outfile /usr/local/tomcat7/logs/catalina-daemon.out -errfile &1 -classpath /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/commons-daemon.jar:/usr/local/tomcat7/bin/tomcat-juli.jar -Djava.util.logging.config.file=/usr/local/tomcat7/conf/logging.properties -Djava.awt.headless=true -Xmx10240m -XX:MaxPermSize=2096m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat7/endorsed -Dcatalina.base=/usr/local/tomcat7 -Dcatalina.home=/usr/local/tomcat7 -Djava.io.tmpdir=/usr/local/tomcat7/temp org.apache.catalina.startup.Bootstrap

    如上,我们知道PID为374,切换使用tomcat用户登录

    vi jkiller.sh 输入以下脚本:

    代码如下:

    #!/bin/sh

    export LANG="zh_CN.UTF-8";

    export LC_ALL="zh_CN.UTF-8";

    LOG_FILE="/tmp/jkiller.log";

    JSTACK_FILE="/tmp/jstack.log";

    PID="$1";

    shift;

    i=0;

    j="$1";

    if [ -z "${j}" ]; then

    j=5;

    fi

    ps -mp ${PID} -o THREAD,tid,time | sort -rn > ${LOG_FILE};

    jstack ${PID} > ${JSTACK_FILE};

    for LINE in `cat ${LOG_FILE}|gawk -F '-' '{print $4}'|gawk -F ' ' '{print $1}'`

    do

    i=$(($i+1));

    if (($i>$j)); then

    break;

    fi;

    XPID=`printf "%xn" ${LINE}`;

    echo -ne "33[32m";

    echo ${XPID};

    echo -e "33[34m";

    grep -A 10 "0x${XPID}" ${JSTACK_FILE};

    echo -e "e[0m";

    done;

    执行该脚本:

    代码如下:

    ./jkiller.sh 374

    该脚本将生成一个/tmp/jkiller.log 文件,里面为各个线程的cpu使用情况,里面带有tid,为线程ID,可以结合/tmp/jstack.log 文件,查看具体是某个线程.

    展开全文
  • 线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况,下面是一个很好用的脚本,可以快速导出每个线程的占用CPU情况,结合jstack日志,排查到具体线程类名。一、首先获得jvm的进程ID...
  • 线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况,下面是一个很好用的脚本,可以快速导出每个线程的占用CPU情况,结合jstack日志,排查到具体线程类名。 一、首先获得jvm的进程...
  • 如何使用Linux Shell脚本查看Java线程的CPU使用情况? 线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况,下面是一个很好用的脚本,可以快速导出每个线程的占用CPU情况,结合...
  •   目前我们的监控,可以发现消耗较高CPU的进程(阀值为3个CPU),通过监控我们可以...然后通过threadump命令,可以打印出某个应用JVM中某时刻所有线程的调用情况,通过线程号我们就可以对应找到线程调用的程...
  • linux查看内存cpu使用情况 top 查看所有进程内存和cpu占用情况; ps (查看线程对cpu占用情况)H -eo (需要的信息)pid,tid,%cpu ps H -eopid,tid,%cpu | grep 进程id(查看进程id的所有线程情况) ...
  • linux下确定某java项目中最耗费cpu的线程运行情况 1、通过top命令查看当前java项目的进程号PID (top命令进入的是一个总览的页面,退出可以按 q) 如果服务器上同时部署较多项目,top命令不容易把项目区分开,...
  • 这两个是用来分析CPU使用率高的情况是什么导致的用的,先top查那个进程导致CPU的使用率高,然后top -Hp pid 看下具体线程那个,再通过 jstack -F pid 打出线程的dump,记得输出到文件,jst...
  • 作者:张振华(Jack) 这里对linux下、sun(oracle) JDK的线程资源占用问题的查找步骤做一个小结; linux环境下,当发现java进程占用CPU资源非常高,且又要... 12377 -H】 查看java进程的有哪些线程的执行情况。 ...
  • cpu分析 top , pidstat(sysstat) pid -p PID -t 1 10 vmstat 1 CPU上下文切换、运行队列、利用率 ps Hh -eo tid pcpu 查看具体线程的CPU消耗 sar 来查看一定世界范围内以及历史的cpu消耗情况信息 查看java线程信息...
  • 察看LWP号:ps –Lf pid 查看指定线程的lwp号。 三级映射:进程PCB --> 页目录(可看成数组,首地址位于PCB中) --> 页表 --> 物理页面 --> 内存单元 参考:《Linux内核源代码情景分析》 ----毛德操 对于进程来说,...
  • 转载:linux查看进程占用IO情况

    千次阅读 2012-11-10 22:12:36
    linux/unix平台下查看总的磁盘IO情况的工具很多,其中最为常用的优秀工具是iostat。该工具是sysstat工具包里的一个工具,但iostat在针对每个进程或线程具体IO使用情况时显的很无力。在这边方面iotop就显的很灵活,...
  • 查看线程栈信息

    千次阅读 2018-08-25 09:50:58
    每一个进程都有自己的一个进程堆栈空间。在Linux界面执行一个执行码时,Shell进程会fork一个子进程,再调用exec... 2、通过TOP -H -p 进程ID,找到具体线程占用情况,Shift+H可以开启关闭线程显示 3 ...
  • 在高并发,多线程环境下的java程序经常需要分析线程状态,本本是一个分析步骤无具体讲解(具体命令可自行google学习) ...3.使用top -Hp pid 查看具体该pid下各个线程所占用的cpu情况(进程下的线程有一个ni...
  • 查看线程占用情况 3.查找java的堆栈信息 将线程id转换成十六进制 #printf %x 15664 #3d30 然后再使用jstack查询线程的堆栈信息 语法:jstack <pid> | grep -a 线程id(十六进制) jstack <pid> | ...
  • JAVA 查看线程、内存

    千次阅读 2019-09-10 10:51:51
    查看运行程序pid jps —— jdk 自带工具 与linux上的ps类似,用来显示本地的java进程,并显示他们的进程ID jconsole:一个java GUI监视...连接上 进程之后,将会展示如下窗口:可以看到具体的内存使用情况 window...
  • 而在linux系统上使用top命令,显示的cpu使用情况就是不准确的,这是因为linux系统没有线程这个说法,故而会有很多种不同的处理方式!1. top这个比较常用的监控对象是平均负载和CPU的负载.具体的参数请使用 top help获取....
  • 查看cpuinfo中是否有lm,如果有lm表示支持64位,lm的意思是long mode,... 您可能感兴趣的文章:linux php-cgi.exe占用cpu 100%的一次排障之旅Linux shell脚本实现CPU预警Linux中使用Shell脚本查看Java线程的CPU使用情况
  • 下面介绍几个mysql数据库常用的查看内存消耗情况的命令~一、linux观察mysql线程内存消耗情况top -p mysqlpid -H然后使用pmap -d 分析一下进程的内存情况二、查看mysql实例内存具体分配情况1、共享内存共享内存中的...
  • linux中,输入top命令后,按1可以显示CPU的具体使用情况: 但是如何知道某个进程具体使用的哪个core呢? 在top中,按f: 可以看到显示最后cpu使用情况的选项,这时按j,该选项就被选中了 退出...
  • 下面介绍几个mysql数据库常用的查看内存消耗情况的命令~一、linux观察mysql线程内存消耗情况top -p mysqlpid -H然后使用pmap -d 分析一下进程的内存情况二、查看mysql实例内存具体分配情况1、共享内存共享内存中的...
  • Linux 虚存的性能问题

    千次阅读 2016-10-25 17:41:59
    进程(也标记为任务或默认线程)通过虚存子系统能够查看地址空间中的线性字节范围,这个功能与物理内存中的物理布局或者分片情况无关。 线程可以在一个呈现为 CPU 全部地址空间的虚拟环境中执行。这种
  • 有时候需要粗略了解CPU的使用情况,以定性的了解代码性能。  今天一看,当时就震惊了:250%!... 有人指点说,这个时候按一下1键,就能看到各个CPU的具体情况(US?)。这样也有参考作用吧。...

空空如也

空空如也

1 2 3 4 5 6
收藏数 108
精华内容 43
关键字:

linux查看线程具体情况

linux 订阅