CPU飆高原因及解決方案

一、CPU飆高原因:

     1.大量中斷

            中斷分爲軟中斷(軟中斷是一種需要內核爲正在運行的進行去做一些事情的請求)和硬中斷(外部引起的)

      2.系統負載高

             負載高表示有很多程序等待調度運行,它會導致上下文切換頻繁

      3.上下文切換頻繁

二、排查 

       1.top命令查看佔用CPU的pid

       2.top -H -p pid  查找pid下面的線程id,顯示線程的cpu的佔用時間,佔用比例,發現有很多個線程都會CPU佔用很高,只能每              個排查

       3.jstack查看線程信息,命令: jstack pid >> aaaa.txt 輸出到文本中再搜索,也可以直接管道搜索 jstack pid | grep "線程id" 這個線程id是16進製表示,需要轉一下,可以用這個命令轉 printf "%x\n" tid 也可以自己計算器轉一下。

       

三、經常出現CPU飆高場景

      1.大量併發的I/O操作    

           一般 I/O 操作不會消耗太多的 CPU ,因爲主要的時間消耗會在 I/O 操作的設備上。比如從磁盤讀文件時,主要的時間在              磁 盤內部的操作上,而消耗的 CPU 時間只佔 I/O 操作響應時間的一少部分。但在大量的併發的 I/O 時纔可能會使得 SYS            CPU 有所增加

       2.多線程搶佔系統資源

             對於多個線程搶佔某一個系統調用的資源,會導致大量的線程等待->喚醒->搶佔,未搶到->等待...。導致不斷的切換線程                 耗 費cpu。

       3.頻繁GC

四、解決

      不同情況引起的CPU飆高要需要不同的方式進行解決,需定位什麼原因造成的。

             

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章