linux里查看最耗CPU的線程

1、top后按c查看最耗cpu的進程,得到pid

2、top -Hp pid 查看該進程里的線程資源使用情況,找到最耗資源的線程的pid

3、jstack pid來查看進程的各個線程棧,注意這里的pid是第一步中進程的pid,不是第二步得到的線程id

4、將第二步得到的pid轉成16進制之后在線程棧信息里查找nid等于pid16進制的,就找到最耗資源的線程的棧信息

?

話不多說了,先來看代碼吧

public class Test{public static void main(String args[]){for(int i=0;i<10;i++){new Thread(){public void run(){try{Thread.sleep(100000);}catch(Exception e){}}}.start();}Thread t=new Thread(){public void run(){int i=0;while(true){i=(i++)/100;}}};t.setName("Busiest Thread");t.start();}
}

這個例子里新創建了11個線程,其中10個線程沒干什么事,主要是sleep,另外有一個線程在循環里一直跑著,可以想象這個線程是這個進程里最耗cpu的線程了,那怎么把這個線程給抓出來呢?

首先我們可以通過top -Hp <pid>來看這個進程里所有線程的cpu消耗情況,得到類似下面的數據

$ top -Hp 18207
top - 19:11:43 up 573 days,  2:43,  2 users,  load average: 3.03, 3.03, 3.02
Tasks:  44 total,   1 running,  43 sleeping,   0 stopped,   0 zombie
Cpu(s): 18.8%us,  0.0%sy,  0.0%ni, 81.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  99191752k total, 98683576k used,   508176k free,   128248k buffers
Swap:  1999864k total,   191064k used,  1808800k free, 17413760k cachedPID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18250 admin     20   0 26.1g  28m  10m R 99.9  0.0   0:19.50 java Test
18207 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18208 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.09 java Test
18209 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18210 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18211 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18212 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18213 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18214 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18215 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18216 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18217 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18218 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18219 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18220 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18221 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18222 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18223 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18224 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18225 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18226 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test
18227 admin     20   0 26.1g  28m  10m S  0.0  0.0   0:00.00 java Test

拿到這個結果之后,我們可以看到cpu最高的線程是pid為18250的線程,占了99.8%:

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18250 admin     20   0 26.1g  28m  10m R 99.9  0.0   0:19.50 java Test

接著我們可以通過jstack <pid>的輸出來看各個線程棧:

$ jstack 18207
2016-03-30 19:12:23
Full thread dump OpenJDK 64-Bit Server VM (25.66-b60 mixed mode):"Attach Listener" #30 daemon prio=9 os_prio=0 tid=0x00007fb90be13000 nid=0x47d7 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE"DestroyJavaVM" #29 prio=5 os_prio=0 tid=0x00007fb96245b800 nid=0x4720 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE"Busiest Thread" #28 prio=5 os_prio=0 tid=0x00007fb91498d000 nid=0x474a runnable [0x00007fb9065fe000]
   java.lang.Thread.State: RUNNABLEat Test$2.run(Test.java:18)"Thread-9" #27 prio=5 os_prio=0 tid=0x00007fb91498c800 nid=0x4749 waiting on condition [0x00007fb906bfe000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)at java.lang.Thread.sleep(Native Method)at Test$1.run(Test.java:9)"Thread-8" #26 prio=5 os_prio=0 tid=0x00007fb91498b800 nid=0x4748 waiting on condition [0x00007fb906ffe000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)at java.lang.Thread.sleep(Native Method)at Test$1.run(Test.java:9)"Thread-7" #25 prio=5 os_prio=0 tid=0x00007fb91498b000 nid=0x4747 waiting on condition [0x00007fb9073fe000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)at java.lang.Thread.sleep(Native Method)at Test$1.run(Test.java:9)"Thread-6" #24 prio=5 os_prio=0 tid=0x00007fb91498a000 nid=0x4746 waiting on condition [0x00007fb9077fe000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)at java.lang.Thread.sleep(Native Method)at Test$1.run(Test.java:9)
...

上面的線程棧我們注意到nid的值其實就是線程ID,它是十六進制的,我們將消耗cpu最高的線程18250,轉成十六進制0X47A,然后從上面的線程棧里找到nid=0X47A的線程,其棧為:

"Busiest Thread" #28 prio=5 os_prio=0 tid=0x00007fb91498d000 nid=0x474a runnable [0x00007fb9065fe000]
   java.lang.Thread.State: RUNNABLEat Test$2.run(Test.java:18)

即將最耗cpu的線程找出來了,是Businest Thread

轉載于:https://www.cnblogs.com/yifanSJ/p/9764965.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279220.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279220.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279220.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vlc傳輸_如何使用VLC通過網絡流式傳輸視頻和音樂

vlc傳輸VLC includes a fairly easy-to-use streaming feature that can stream music and videos over a local network or the Internet. You can tune into the stream using VLC or other media players. VLC包括一個相當易于使用的流媒體功能&#xff0c;可以通過本地網絡…

python實現異步的幾種方式_終于搞明白了,異步Python比同步Python究竟快在哪里?...

大家好&#xff0c;你是否聽人們說過&#xff0c;異步 Python 代碼比“普通(或同步)Python 代碼更快&#xff1f; 果真是那樣嗎&#xff1f;同步和異步是什么意思&#xff1f;Web 應用程序通常要處理許多請求&#xff0c;這些請求在短時間內來自不同的客戶端。為避免處理延遲&a…

您可能沒有注意到的7個Ubuntu File Manager功能

The Nautilus file manager included with Ubuntu includes some useful features you may not notice unless you go looking for them. You can create saved searches, mount remote file systems, use tabs in your file manager, and more. Ubuntu隨附的Nautilus文件管理器…

P3174 [HAOI2009]毛毛蟲(樹形dp)

P3174 [HAOI2009]毛毛蟲 題目描述 對于一棵樹&#xff0c;我們可以將某條鏈和與該鏈相連的邊抽出來&#xff0c;看上去就象成一個毛毛蟲&#xff0c;點數越多&#xff0c;毛毛蟲就越大。例如下圖左邊的樹&#xff08;圖 1 &#xff09;抽出一部分就變成了右邊的一個毛毛蟲了&am…

wdcp mysql密碼_WDCP提示無法連接mysql及創建站點提示mysql密碼不正確

一、wdcp系統訪問提示無法連接mysql1、可能是mysql服務沒啟動&#xff0c;首先ssh登陸服務器&#xff0c;然后執行service mysqld restart重啟mysql再訪問試下&#xff0c;如果無法啟動&#xff0c;先用df -lh查看下home分區有沒有掛載&#xff0c;如果沒有掛載嘗試先重啟&…

applecare多少錢?_否,AppleCare +無法覆蓋丟失或被盜的iPhone

applecare多少錢?Losing your iPhone or getting it stolen is pretty common these days, but it’s important to know that while AppleCare covers accidental damage, it doesn’t cover a lost or stolen iPhone. 如今&#xff0c;丟失iPhone或使其被盜很普遍&#xff0…

10以內數的組成分解圖_大班數學教案《10以內數的組成》

大班數學教案《10以內數的組成》作為一名教學工作者&#xff0c;時常需要編寫教案&#xff0c;借助教案可以讓教學工作更科學化。那么什么樣的教案才是好的呢&#xff1f;以下是小編收集整理的大班數學教案《10以內數的組成》&#xff0c;希望能夠幫助到大家。大班數學教案《10…

HDFS文件目錄操作代碼

分布式文件系統HDFS中對文件/目錄的相關操作代碼&#xff0c;整理了一下&#xff0c;大概包括以下部分&#xff1a; 文件夾的新建、刪除、重命名文件夾中子文件和目錄的統計文件的新建及顯示文件內容文件在local和remote間的相互復制定位文件在HDFS中的位置&#xff0c;以及副本…

craigslist_如何設置Craigslist警報(用于電子郵件或SMS)

craigslistWhether you’re looking for apartments or used gadgets on Craigslist, you don’t have to keep checking the website. You can stay on top of things by getting notified when new posts go up that match your searches. 無論您是在Craigslist上尋找公寓還是…

merge r語言daframe_R語言總結

R語言總結數據框操作(plyr包)輔助小函數1 splat函數&#xff1a;作用&#xff1a;把原函數中多個參數打包為一個list作為參數&#xff0c;然后輸出新的函數。也就是說本來某個函數需要輸入多個參數&#xff0c;現在套上splat后&#xff0c;只要輸入一個參數list就可以了&#x…

Django模板語言中的自定義方法filter過濾器實現web網頁的瀑布流

模板語言自定義方法介紹 自定義方法注意事項 Django中有simple_tag 和 filter 兩種自定義方法,之前也提到過,需要注意的是 擴展目錄名稱必須是templatetagstemplatetags中的自定義標簽和過濾器必須依賴于一個django app&#xff0c;也就是說&#xff0c;自定義標簽和過濾器是綁…

dsp怪胎_2012年6月最佳怪胎文章

dsp怪胎This past month we covered topics such as why you only have to wipe a disk once to erase it, what RSS is and how you can benefit from using it, how websites are tracking you online, and more. Join us as we look back at the best articles for June. 在…

mysql 回退查詢_MYSQL數據庫表排序規則不一致導致聯表查詢,索引不起作用問題...

Mysql數據庫表排序規則不一致導致聯表查詢&#xff0c;索引不起作用問題表更描述: 將mysql數據庫中的worktask表添加ishaspic字段。具體操作&#xff1a;(1)數據庫worktask表新添是否有圖片字段ishaspic&#xff1b;新添字段時&#xff0c;報錯[SQL] alter table WorkTask add …

如何在Ubuntu上查看和寫入系統日志文件

Linux logs a large amount of events to the disk, where they’re mostly stored in the /var/log directory in plain text. Most log entries go through the system logging daemon, syslogd, and are written to the system log. Linux將大量事件記錄到磁盤上&#xff0c…

[轉]table中設置tr行間距

原文地址:https://blog.csdn.net/itmyhome1990/article/details/50475616 CSS border-collapse 屬性設置表格的邊框是否被合并為一個單一的邊框 值描述separate默認值。邊框會被分開。不會忽略 border-spacing 和 empty-cells 屬性。collapse如果可能&#xff0c;邊框會合并為一…

向Ubuntu提供反饋的5種方法

Ubuntu, like many other Linux distributions, is a community-developed operating system. In addition to getting involved and submitting patches, there are a variety of ways you can provide useful feedback and suggest features to Ubuntu. 與許多其他Linux發行版…

Tomcat 發布項目 conf/Catalina/localhost 配置 及數據源配置

本文介紹通過在tomcat的conf/Catalina/localhost目錄下添加配置文件&#xff0c;來發布項目。因為這樣對 tomcat 的入侵性最小&#xff0c;只需要新增一個配置文件&#xff0c;不需要修改原有配置&#xff1b;而且支持動態解析&#xff0c;修改完代碼直接生效(修改配置除外)。在…

Centos7 中文亂碼

1. 安裝中文庫 yum groupinstall "fonts" 2. 檢查是否有中文語言包 locale -a 3. 查看當前系統語言環境 locale 解析如下 LANG:當前系統的語言LC_CTYPE&#xff1a;語言符號及其分類LC_NUMERIC&#xff1a;數字LC_COLLATE&#xff1a;比較和排序習慣LC_TIME&#xff…

pkpm板按彈性計算還是塑性_雙向板按彈性方法還是按塑性方法計算

雙向板按彈性方法還是按塑性方法計算茅老師您好&#xff01;想請教您個問題&#xff0c;PKPM計算雙向板時一般都是按彈性算吧&#xff0c;可我去年剛進設計院的時候有一個項目是按塑性算的&#xff0c;這樣影響大不大啊&#xff0c;支座與跨中彎矩比值系數取得默認的1.8&#x…

chrome自動退出的原因_Chrome 70將讓用戶選擇退出新的自動登錄功能

chrome自動退出的原因An upcoming Chrome option allows users to log into Google accounts without logging into the browser. The change was prompted by a backlash among users and privacy advocates. 即將推出的Chrome選項允許用戶無需登錄瀏覽器即可登錄Google帳戶。…