適用於: Linux 中的 .NET
本文介紹如何使用 top
和 htop
命令行工具來監視進程。
必要條件
如同上一個部分,此部分的結構將更加強調當您開始疑難解答時所要遵循的理論和主體。 它沒有任何必要條件。 不過,如果您已遵循此訓練的所有步驟,您應該已設定下列專案:
- Nginx 有兩個網站:
- 第一個網站會使用 myfirstwebsite 主機標頭來
http://myfirstwebsite
接聽要求,並將要求路由傳送至在埠 5000 上接聽的示範 ASP.NET Core 應用程式。 - 第二個網站會使用 buggyamb (
http://buggyamb
) 主機標頭來接聽要求,並將要求路由傳送至正在埠 5001 上接聽的第二個 ASP.NET Core 範例 Buggy 應用程式。
- 第一個網站會使用 myfirstwebsite 主機標頭來
- ASP.NET Core 應用程式都會以重新啟動伺服器時自動重新啟動的服務執行,或應用程式停止回應或失敗。
- Linux 本機防火牆已啟用並設定為允許 SSH 和 HTTP 流量。
此部分的目標
針對效能問題進行疑難解答時,您可能必須監視進程的CPU和記憶體使用量,以瞭解其資源耗用量隨時間演進的方式。 在 Windows 中,您可以使用任務管理員來執行此動作。 Linux 有數個工具來達成相同的目標。
此部分會檢查 top
和 htop
命令行工具來監視進程。
top
若要在Linux中開啟對等任務管理員,請執行 top
命令。
在此範例中,您可以在 PID 19933 的第一個列出的程式中觀察到進程表現出高 CPU 使用量,而且記憶體使用量也很高。
選取和取消選取數據行
若要在工具提供的檢視 top
中新增或移除資料行,請在執行此工具時選取 F 。 以星號標示的數據行 \ 是選取以顯示的數據行。 使用箭頭鍵來移動可用的數據行,並使用空格鍵來選取或取消選取數據行。 然後,選取 Esc 以結束。
變更將會儲存給您的用戶帳戶。 下次執行 top
時,您會看到您選取的數據行。
依使用者篩選輸出
若要能夠以有問題的資源耗用量案例為目標,請務必瞭解如何篩選 top
輸出。 其中一個最常見的方法是依用戶名稱篩選進程。 您可以選取 U,然後輸入使用者名稱。 下列螢幕快照顯示 top
工具篩選 www-data 使用者的可用進程快照集。
當您選取 Enter 時,您會看到由指定使用者執行的進程(在此範例中為 www-data 使用者)。
當您檢查篩選 top
檢視的輸出時,您可以看到其中兩個進程是 .NET 進程。 這兩個進程會執行兩個 ASP.NET Core 應用程式,而其他兩個進程則屬於 Nginx。
您可以在直接執行 top
命令時使用篩選。 例如,如果您執行 top -u www-data
命令,則會產生與開啟 top
工具並選取 U 依使用者篩選時所得到的相同輸出。
拿掉閑置進程
選取 [我 ] 或執行 top -i
命令來篩選輸出, top
只顯示耗用 CPU 的進程。 下列螢幕快照顯示命令的 top -i -u www-data
輸出。 請注意, top
即使有四個進程是使用 www-data 使用者帳戶啟動,輸出還是會隱藏閑置的進程。 只有具有 PID=19933 的進程會耗用 CPU。
再次選取 [我 ] 切換切換開關,並顯示閑置的進程。
終止進程
若要終止或終止進程,您必須傳送終止訊號給進程。 您可能還記得我們稍早使用 sudo kill -9 <PID>
命令來終止進程。 您也可以使用 top
來終止進程。 選取 K 以在執行時 top
終止進程,然後輸入您想要終止的進程 PID。
選取 Enter 之後, top
會要求訊號類型。 選取 [ 再輸入 一次] 以傳送「終止」訊號 (15/sigterm
)。
幾秒鐘之後,您會看到清單中遺漏了 PID 122632的程式。 請記住,在清單中,「122632」程式會對應至 BuggyAmb ASP.NET Core 應用程式。 因為它已設定為自動啟動,所以您會看到新的 .NET 進程在關機後啟動新的 PID。
htop
Htop 是即時系統監視的行程查看器和文字模式應用程式,類似於 top
。 它很容易使用,而且會顯示正在執行的進程完整清單。
此工具 htop
會預安裝在UbuntuLinux的發行版中,用來安裝本課程的虛擬伺服器。 如果 htop
Linux 發行版中未安裝,您可以使用 Linux 中的套件管理員來安裝它。 (請參閱 第 1.3 部分 - 在 Linux 中安裝 .NET 以取得詳細數據。
若要啟動工具,請執行 htop
命令。 您會看到類似下列五顏六色的輸出:
注意
底線表示您可以使用的函式索引鍵。 選取 F6 依不同的選項排序,使用箭頭鍵來選取數據 PERCENT_MEM
行,然後選取 Enter。 這會依記憶體使用量來排序進程。
top
如同 命令,您可以針對數個函式使用鍵盤快捷方式。 例如,選取 [U ] 以從清單中選取使用者名稱。
不過,輸出中 htop
有些混淆。 根據最後一個範例的輸出,您應該會看到 www-data 使用者的四個程式。 不過,我們看到有更多的專案。 造成此行為的原因為何?
輸出的差異是因為 htop
預設會顯示進程及其線程。 除非您想要看到線程,否則建議您一律停用線程檢視,讓輸出更加清楚。 若要停用線程檢視並只查看進程,請選取 [Shift+H]。 下列螢幕快照顯示沒有線程的進程。
如果您必須終止進程,請使用箭頭鍵選取進程,選取 F9,然後選取 Enter 以傳送「終止」訊號。
此簡潔概觀應該可讓您瞭解哪些進程正在執行及取用系統上的資源。 若要結束 htop
,請選取 F10 或 Ctrl+C。
下一步
本系列的下一個部分(第 3.3 部分 - 調試程式、核心傾印和收集核心傾印)討論調試程式和傾印檔案。