日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

window服务器cpu过高的排查_高频面试题:Java程序占用 CPU 过高怎么排查

發布時間:2025/4/5 windows 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 window服务器cpu过高的排查_高频面试题:Java程序占用 CPU 过高怎么排查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個問題可以說是 Java 面試的高頻面試題了,有很多面試官都喜歡問這個問題,問題可能是下面這樣的。

線上一臺服務器 CPU 使用率100% 了,如果你碰到這樣的情況,如何排查并找到問題原因?

這就是一個套路題,所謂套路題就是有標準的套路解法的,掌握了套路,不僅能解決面試官,還能解決問題。不然真的就掉進套路里了。

當我們真碰到這個問題的時候應該怎么排查呢?

模擬一個高 CPU 場景

先用一段程序創建幾個線程,將其中一個線程設置成高 CPU 使用率的。

public static void main(String[] args) {for (int i = 0; i < 10; i++) {Thread thread = new Thread(() -> {System.out.println(Thread.currentThread().getName());try {Thread.sleep(30 * 60 * 1000);}catch (Exception e){e.printStackTrace();}});thread.setName("thread-" + i);thread.start();}Thread highCpuThread = new Thread(() -> {int i = 0;while (true) {i++;}});highCpuThread.setName("HighCpu");highCpuThread.start(); }

運行這段程序后,前面 10 個線程都處于休眠狀態,只有最后一個線程會持續的占用 CPU 。

運行這段程序,然后就可以開始一些列的操作來發現問題原因了。

排查步驟

第一步,使用 top 找到占用 CPU 最高的 Java 進程

在真實環境中,首先要確認是不是 Java 程序造成的,如果有系統監控工具,可能會直接在預警信息里告訴你是有哪個進程造成的,但也有可能不知道,需要我們手動排查。

如果是在面試場景中,這個問題可能不需要確認,畢竟 Java 面試,面試官可能直接就告訴你是 Java 占用的 CPU 過高。

這一步也非常簡單,就是一個 top命令而已,基本上所有同學都用過這個命令吧。

使用 top命令發現占用 CPU 99.7% 的線程是 Java 進程,進程 PID 為 13731。

第二步,用 top -Hp 命令查看占用 CPU 最高的線程

上一步用 top命令找到了那個 Java 進程。那一個進程中有那么多線程,不可能所有線程都一直占著 CPU 不放,這一步要做的就是揪出這個罪魁禍首,當然有可能不止一個。

執行top -Hp pid命令,pid 就是前面的 Java 進程,我這個例子中就是 13731 ,完整命令為:

top -Hp 13731,執行之后的效果如下

可以看到占用 CPU 最高的那個線程 PID 為 13756。

然后將 13756轉換為 16 進制的,后面會用到,可以用在線進制轉換的網站直接轉換,轉換結果為 0x35bc

第三步,保存線程棧信息

當前 Java 程序的所有線程信息都可以通過 jstack命令查看,我們用jstack命令將第一步找到的 Java 進程的線程棧保存下來。

jstack 13731 > thread_stack.log

第四步,在線程棧中查找最貴禍首的線程

第二步已經找到了這個罪魁禍首的線程 PID,并把它轉換成了 16 進制的,第三步保存下來的線程棧中有所有線程的 PID 16 進制信息,我們在線程棧中查找這個16進制的線程 id (0x35bc)。

怎么樣,現在一目了然了,線程名稱、線程狀態、以及哪行代碼消耗了最多的 CPU 都很清楚了。

公眾號:古時的風箏

總結

以上是生活随笔為你收集整理的window服务器cpu过高的排查_高频面试题:Java程序占用 CPU 过高怎么排查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。