jstack應用-查找CPU飚高的原因

場景

在系統上線后,經常會遇到運維的同學跑過來說:“這次發版后,cpu線程使用率到一場,到100%了”。這時候不要慌,可以使用堆轉儲來分析到底是哪個線程引起的。

查找元兇

[root@java_mofei_01 test]# top
Mem:  16333644k total,  9472968k used,  6860676k free,   165616k buffers
Swap:        0k total,        0k used,        0k free,  6665292k cachedPID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                           
17850 root      20   0 7588m 112m  11m S 100.7  0.7  47:53.80 java                                                                                                                                                                                              1552 root      20   0  121m  13m 8524 S  0.7  0.1  14:37.75 AliYunDun                                                                                                                                                                                          3581 root      20   0 9750m 2.0g  13m S  0.7 12.9 298:30.20 java                                                                                                                                                                                               1 root      20   0 19360 1612 1308 S  0.0  0.0   0:00.81 init                                                                                                                                                                                               2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                                                                                                                                           3 root      RT   0     0    0    0 S  0.0  0.0   0:00.14 migration/0   

發現pid=17850的進程線程使用率100%,查詢進程中哪個線程導致的問題

[root@java_mofei_01 test]# top -H -p 17850
top - 17:43:15 up 5 days,  7:31,  1 user,  load average: 0.99, 0.97, 0.91
Tasks:  32 total,   1 running,  31 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.7%us,  8.9%sy,  0.0%ni, 87.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16333644k total,  9592504k used,  6741140k free,   165700k buffers
Swap:        0k total,        0k used,        0k free,  6781620k cachedPID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                           
17880 root      20   0 7588m 112m  11m R 99.9  0.7  50:47.43 java                                                                                                                                                                                               
17856 root      20   0 7588m 112m  11m S  0.3  0.7   0:02.08 java                                                                                                                                                                                               
17850 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17851 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.23 java                                                                                                                                                                                               
17852 root      20   0 7588m 112m  11m S  0.0  0.7   0:02.09 java                                                                                                                                                                                               
17853 root      20   0 7588m 112m  11m S  0.0  0.7   0:02.12 java                                                                                                                                                                                               
17854 root      20   0 7588m 112m  11m S  0.0  0.7   0:02.07 java                                                                                                                                                                                               
17855 root      20   0 7588m 112m  11m S  0.0  0.7   0:02.06 java                                                                                                                                                                                               
17857 root      20   0 7588m 112m  11m S  0.0  0.7   0:02.07 java                                                                                                                                                                                               
17858 root      20   0 7588m 112m  11m S  0.0  0.7   0:02.08 java                                                                                                                                                                                               
17859 root      20   0 7588m 112m  11m S  0.0  0.7   0:02.04 java                                                                                                                                                                                               
17860 root      20   0 7588m 112m  11m S  0.0  0.7   0:02.05 java                                                                                                                                                                                               
17861 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17862 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17863 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17864 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.10 java                                                                                                                                                                                               
17865 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.12 java                                                                                                                                                                                               
17866 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.09 java                                                                                                                                                                                               
17867 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.12 java                                                                                                                                                                                               
17868 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17869 root      20   0 7588m 112m  11m S  0.0  0.7   0:01.04 java                                                                                                                                                                                               
17870 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17871 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17872 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17873 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17874 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17875 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17876 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17877 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17878 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17879 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java                                                                                                                                                                                               
17946 root      20   0 7588m 112m  11m S  0.0  0.7   0:00.00 java    

發現17880的線程導致cpu飚高。

通過jstack查看線程信息

[root@java_mofei_01 test]# printf "%x\n" 17880          
45d8
[root@java_mofei_01 test]# jstack 17850|grep 45d8 -A 30
"pool-1-thread-11" #20 prio=5 os_prio=0 tid=0x00007fc860352800 nid=0x45d8 runnable [0x00007fc8417d2000]java.lang.Thread.State: RUNNABLEat java.io.FileOutputStream.writeBytes(Native Method)at java.io.FileOutputStream.write(FileOutputStream.java:326)at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)- locked <0x00000006c6c2e708> (a java.io.BufferedOutputStream)at java.io.PrintStream.write(PrintStream.java:482)- locked <0x00000006c6c10178> (a java.io.PrintStream)at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104)- locked <0x00000006c6c26620> (a java.io.OutputStreamWriter)at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:185)at java.io.PrintStream.write(PrintStream.java:527)- eliminated <0x00000006c6c10178> (a java.io.PrintStream)at java.io.PrintStream.print(PrintStream.java:597)at java.io.PrintStream.println(PrintStream.java:736)- locked <0x00000006c6c10178> (a java.io.PrintStream)at com.demo.guava.HardTask.call(HardTask.java:18)at com.demo.guava.HardTask.call(HardTask.java:9)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)"pool-1-thread-10" #19 prio=5 os_prio=0 tid=0x00007fc860345000 nid=0x45d7 waiting on condition [0x00007fc8418d3000]java.lang.Thread.State: WAITING (parking)at sun.misc.Unsafe.park(Native Method)- parking to wait for  <0x00000006c6c14178> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
  • 首先把pid 17880轉成16進制
  • 查詢堆信息
  • 發現HardTask(源碼在末尾)第18行可能有問題

    源碼

public class HardTask implements Callable<String> {@Overridepublic String call() throws Exception {while(true){int a=100;int b=100;int rs=a+b/100-b;System.out.println(rs);}}
}public class SimpleTask implements Callable<String> {@Overridepublic String call() throws Exception {Thread.sleep(300);//什么都不做return null;}
}public class CpuTest {public static void main(String[] args){ExecutorService executorService=Executors.newFixedThreadPool(11);for (int i = 0; i < 10; i++) {executorService.submit(new SimpleTask());}executorService.submit(new HardTask());}
}

源碼很簡單,就是創建了2種線程HardTask和SimpleTask。然后通過CpuTest進行啟動。

轉載于:https://blog.51cto.com/4436396/2118787

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

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

相關文章

Enhancement增強圖形halcon算子,持續更新

目錄coherence_enhancing_diffemphasizeequ_histo_imageilluminatemean_curvature_flowscale_image_max_shock_filtercoherence_enhancing_diff 功能&#xff1a;執行一個圖像的一個一致性增強擴散。 emphasize 功能&#xff1a;增強圖像對比度。 equ_histo_image 功能&am…

音頻中采樣位數,采樣率,比特率的名詞解釋(轉)

采樣位數&#xff08;采樣大小&#xff09;&#xff1a; 采樣位數可以理解為采集卡處理聲音的解析度。這個數值越大&#xff0c;解析度就越高&#xff0c;錄制和回放的聲音就越真實。我們首先要知道&#xff1a;電腦中的聲音文件是用數字0和1來表示的。所以在電腦上錄音的本質就…

WebSocket實時異步通信

WebSocket實時異步通信 【一】WebSocket簡介 WebSocket是HTML5推出一個協議規范&#xff0c;用來B/S模式中服務器端和客戶端之間進行實時異步通信。 眾所周知&#xff0c;傳統的HTTP協議中&#xff0c;服務器端和客戶端通信只能是在客戶端發送一個請求之后&#xff0c;服務器端…

多線程和多進程的區別(小結)

分類&#xff1a; linux 2009-06-19 09:33 11501人閱讀 評論(15) 收藏 舉報 很想寫點關于多進程和多線程的東西&#xff0c;我確實很愛他們。但是每每想動手寫點關于他們的東西&#xff0c;卻總是求全心理作祟&#xff0c;始終動不了手。 今天終于下了決心&#xff0c;寫點東西…

redis-cli使用密碼登錄

redis-cli使用密碼登錄 注意IP地址要寫正確&#xff01; 學習了: https://blog.csdn.net/lsm135/article/details/52932896 https://blog.csdn.net/zyz511919766/article/details/42268219 https://zhidao.baidu.com/question/756651357338691604.html 登錄后 auth pass 或者 r…

FFT快速傅式變換算法halcon算子,持續更新

目錄convol_fftconvol_gaborcorrelation_fftdeserialize_fft_optimization_dataenergy_gaborfft_genericfft_imagefft_image_invgen_bandfiltergen_bandpassgen_derivative_filtergen_filter_maskgen_gaborgen_gauss_filtergen_highpassgen_lowpassgen_mean_filtergen_sin_band…

仿照vue實現簡易的MVVM框架(一)

代碼github地址&#xff1a; https://github.com/susantong/myMVVM 主要的方法有&#xff1a; compile 深度遍歷前端界面的節點&#xff0c;將其復制進一個addQuene隊列中pasers 遍歷所有的節點&#xff0c;并將節點包裝成一個含有本節點、自定義屬性及屬性值的對象。要想實現雙…

tomcat 啟動時內存溢出

在tomcat_home/bin目錄下找到catalina.bat&#xff0c;用文本編輯器打開&#xff0c;加上下面一行&#xff1a; set JAVA_OPTS -Xms1024M -Xmx1024M -XX:PermSize256M -XX:MaxNewSize256M -XX:MaxPermSize256M 解釋一下各個參數&#xff1a; -Xms1024M&#xff1a;初始化堆內存…

@angular/platform-browser-dynamic

/** experimental */ export declare class JitCompilerFactory implements CompilerFactory {createCompiler(options?: CompilerOptions[]): Compiler; }export declare const platformBrowserDynamic: (extraProviders?: StaticProvider[] | undefined) > PlatformRef;…

牛人項目失敗的總結

tom_lt: 遇到的失敗項目比較多&#xff01;讓人郁悶&#xff01;&#xff01; 仔細分析原因&#xff0c;主要在于&#xff1a; 1.項目開始需求不明確。領導決定動手&#xff0c;就開始啟動項目&#xff0c;造成和客戶需要差距太大&#xff0c;導致失敗&#xff1b; 2.需求變更沒…

Android:日常學習筆記(8)———探究UI開發(5)

Android:日常學習筆記(8)———探究UI開發(5) ListView控件的使用 ListView概述 A view that shows items in a vertically scrolling list. The items come from the ListAdapter associated with this view. 1.關于ArrayAdapter&#xff1a; ArrayAdapter<T> 是 ListAd…

Geometric-Transformations圖像幾何變換halcon算子,持續更新

目錄affine_trans_imageaffine_trans_image_sizeconvert_map_typemap_imagemirror_imagepolar_trans_image_extpolar_trans_image_invprojective_trans_imageprojective_trans_image_sizerotate_imagezoom_image_factorzoom_image_sizeaffine_trans_image 功能&#xff1a;把任…

hibernate inverse屬性的作用

hibernate配置文件中有這么一個屬性inverse&#xff0c;它是用來指定關聯的控制方的。inverse屬性默認是false&#xff0c;若為false&#xff0c;則關聯由自己控制&#xff0c;若為true&#xff0c;則關聯由對方控制。見例子&#xff1a; 一個Parent有多個Child,一個Child只能有…

分布式鎖與實現(一)——基于Redis實現

概述 目前幾乎很多大型網站及應用都是分布式部署的&#xff0c;分布式場景中的數據一致性問題一直是一個比較重要的話題。分布式的CAP理論告訴我們“任何一個分布式系統都無法同時滿足一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;和…

淺析軟件項目管理中十個誤區(來自:http://manager.csdn.net/n/20051213/30907.html)

隨著計算機硬件水平的不斷提高&#xff0c;計算機軟件的規模和復雜度也隨之增加。計算機軟件開發從“個人英雄”時代向團隊時代邁進&#xff0c;計算機軟件項目的管理也從“作坊式”管理向“軟件工廠式”管理邁進。這就要求軟件開發人員特別是軟件項目管理人員更深一步地理解和…

倆孩隨筆

倆孩隨筆 有人給我貼了技術男加奶爸的標簽&#xff0c;不過這兩項都不是我的強項。我深知自己最大的長處在哪&#xff1a;普通&#xff0c;扔人堆里&#xff0c;不是認不出來&#xff0c;而是壓根看不著。想把事情做好&#xff0c;常常會用力過度。工作平平淡淡&#xff0c;需…

Inpainting圖像修復halcon算子,持續更新

目錄harmonic_interpolationinpainting_anisoinpainting_cedinpainting_ctinpainting_mcfinpainting_textureharmonic_interpolation 功能&#xff1a;對一個圖像區域執行諧波插值。 inpainting_aniso 功能&#xff1a;通過各向異性擴散執行圖像修復。 inpainting_ced 功能…

算法(偽代碼)的書寫

q ? Queue&#xff08;隊列&#xff09;, s ? Set&#xff08;集合&#xff09;pq ? PriorityQueue&#xff08;優先隊列&#xff09;d ? distance1. initialization 變量&#xff0c;數據結構的定義&#xff0c;及初始值的賦值&#xff1b;比如著名的 Dijkstra &#xff0…

第八次作業——系統設計與團隊分配(個人)

團隊作業地址&#xff1a;https://www.cnblogs.com/clio-hhhhhhl/p/9079157.html 個人碼云地址&#xff1a;https://gitee.com/Cliohl/events 團隊碼云地址&#xff1a;https://gitee.com/Cliohl/zhuoyue 項目進展&#xff1a; 上禮拜進展&#xff1a;把部分前端頁面實現出來&a…

深入理解Activity啟動流程(二)–Activity啟動相關類的類圖

本文原創作者:Cloud Chou. 歡迎轉載&#xff0c;請注明出處和本文鏈接 本系列博客將詳細闡述Activity的啟動流程&#xff0c;這些博客基于Cm 10.1源碼研究。 在介紹Activity的詳細啟動流程之前&#xff0c;先為大家介紹Activity啟動時涉及到的類&#xff0c;這樣大家可以有大概…