Linux 系統環境監測

来源:https://www.cnblogs.com/heyongshen/archive/2022/12/03/16947514.html
-Advertisement-
Play Games

Linux系統環境監測 Linux系統環境主要監測CPU、記憶體、磁碟I/O和網路流量。 1. CPU (1) 查看CPU的負載情況:uptime 可以通過uptime查看系統整體的負載情況。 如果伺服器的CPU為1核心,則1分鐘的系統平均負載 >=3 說明負載過高,如果伺服器的CPU為4核心,則lo ...


Linux系統環境監測

Linux系統環境主要監測CPU、記憶體、磁碟I/O和網路流量。

1. CPU

(1) 查看CPU的負載情況:uptime

可以通過uptime查看系統整體的負載情況。

如果伺服器的CPU為1核心,則1分鐘的系統平均負載 >=3 說明負載過高,如果伺服器的CPU為4核心,則load average中的數字 >=12 負載過高。

root@ubuntu1804:~# uptime 
09:57:53 up  7:17,  2 users,  load average: 0.10, 0.03, 0.01
 

09:57:53                        # 當前時間
up  7:17                        # 主機已運行時間
2 users                         # 當前登錄用戶數
load average: 0.10, 0.03, 0.01  # 系統負載,即任務隊列的平均長度。 三個數值分別為  1分鐘、5分鐘、15分鐘前到現在的平均值

(2)linux中查看cpu的邏輯數量:

ehigh@ubuntu:~$ grep -c 'processor' /proc/cpuinfo
8

CPU:central processing unit,中央處理器。

image

插槽:表示電腦上插了幾個物理cpu
內核:表示這個物理cpu有幾個核心,一個核心就是一個cpu
邏輯處理器:邏輯上的處理器數量,通過超線程技術將一個處理器模擬出兩個處理器出來。
超線程技術:在一顆CPU同時執行多個程式而共同分享一顆CPU內的資源,理論上要像兩顆CPU一樣在同一時間執行兩個線程

cpu發展歷程:

剛開始一個物理cpu只有一個核心,通過提高核心的工作頻率來提高性能,但是會產生過多的熱量。
後面因特爾發明瞭超線程技術,在一顆CPU同時執行多個程式而共同分享一顆CPU內的資源,理論上要像兩顆CPU一樣在同一時間執行兩個線程
後面採用多核架構,在一個物理cpu裡面放多個核心,好似一輛汽車放多個發動機。

例如:伺服器上面插了一個物理cpu是4核8線程。表示的是這個cpu又4個核心,支持超線程技術,邏輯cpu就是8個。

併發

(3)查看系統中使用CPU最多的進程:top

使用top命令,按下大寫的P,可以按cpu使用率排序

PID     USER      PR   NI     VIRT     RES     SHR    S     %CPU     %MEM     TIME+     COMMAND
720     root      20   0     473464    22060   19128  S      1.7      0.2   119:55.14   sunloginclient	
3590    emqx      20   0     3483576   201492  74484  S      1.3      2.0   64:39.37    beam.smp     
984     root      20   0     2754328   50696   5192   S      1.0      0.5   77:32.96    taosd

進程的cpu占用能否超過100%?

如果你的4核心的cpu,你可以運行400%

判斷CPU當前忙不忙?

要結合cpu使用率和隊列一起看,如果一分鐘內cpu的隊列數超過3並且cpu的使用率也很高,說明當前cpu很忙。

(4)查看cpu的使用率:

使用top命令,然後按數字1就可以顯示每個cpu的詳細信息

top - 10:48:44 up 5 days,  1:15,  1 user,  load average: 0.10, 0.14, 0.10
Tasks: 398 total,   1 running, 397 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  3.4 sy,  0.0 ni, 96.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu6  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   9952.6 total,   5473.8 free,   2145.3 used,   2333.5 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   7477.7 avail Mem 

# 96.6 id -- 表示cpu的空閑率是96.6%

2. 記憶體

(1)查看記憶體的大小和使用量:

root@ubuntu:~# free -h
              total        used        free      shared  buff/cache   available
Mem:          9.7Gi       2.1Gi       5.4Gi        49Mi       2.3Gi       7.3Gi
Swap:            0B          0B          0B

#選項:
# -h 表示系統會根據值的大小來選擇合適的單位,預設是byte


# aotal	      總計物理(swap)記憶體的大小
# used	      已使用物理記憶體(swap)的大小
# free	      可用的物理記憶體(swap)大小
# shared	  多個進程共用的記憶體總額
# buff/cache  磁碟的緩存大小
# available	  可以被新應用程式使用的記憶體大小


# Mem:物理記憶體的大小
# Swap:交換分區的大小,交換分區就是使用磁碟的一部分空間來模擬記憶體,當物理記憶體占用滿的時候就將一部分不常用的數據移動到交換分區中。交換分區是臨時充當記憶體的作用,性能很低。

(2)查看系統使用記憶體最多的進程:

使用top命令然後按大寫M就可以按照記憶體的使用率來進行排序,按e可以按M,G,T 這些單位來顯示

PID   USER      PR  NI    VIRT    RES    SHR   S  %CPU   %MEM      TIME+ COMMAND
1377  mysql     20   0    4.8g    0.8g   0.0g  S   0.7   7.8       67:01.24 mysqld
977   root      20   0    7.7g    0.3g   0.0g  S   0.0   3.4       32:34.83 java
3590  emqx      20   0    3.3g    0.2g   0.1g  S   0.7   2.0       64:48.04 beam.smp
446   root      19  -1    0.3g    0.2g   0.2g  S   0.0   2.0       1:59.99 systemd-journ

3. 磁碟IO

(1)查看對磁碟讀寫最多的進程

oot@ubuntu1804:~# iostat -dkp
Linux 4.15.0-156-generic (ubuntu1804) 	12/03/2022 	_x86_64_	(4 CPU)

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.00         0.00         0.00          8          0
sda               0.64        16.17        58.90     487458    1775844
sda1              0.01         0.20         0.00       5893         96
sda2              0.00         0.00         0.00          4          0
sda5              0.00         0.11         0.00       3312          0
sda6              0.63        15.79        58.90     476129    1775748
scd0              0.00         0.07         0.00       2056          0

# kB_read/s   每秒從磁碟讀入的數據量,單位為K.
# kB_wrtn/s    每秒向磁碟寫入的數據量,單位為K.
# kB_read    讀入的數據總量,單位為K.
# kB_wrtn    寫入的數據總量,單位為K.

# -d 僅顯示磁碟統計信息
# -k 以K為單位顯示每秒的磁碟請求數,預設單位塊.
# -p device | ALL 用於顯示塊設備及系統分區的統計信息.

伺服器很卡,查看CPU使用率不高,記憶體也夠用,但就是卡,尤其是打開新程式或文件時,更卡。此時是哪出問題了?

一般是磁碟IO到達了瓶頸,還企業級ssd可以提高性能瓶頸。

(2)查看哪個進程使用磁碟讀寫最多

root@ubuntu1804:~# iotop -o

Total DISK READ :       5.79 M/s | Total DISK WRITE :       2.28 M/s
Actual DISK READ:       5.79 M/s | Actual DISK WRITE:       4.64 M/s

TID    PRIO  USER     DISK READ      DISK WRITE    SWAPIN     IO>      COMMAND
17238  be/4  tom      5.79 M/s       0.00 B/s      0.00 %     64.19 %  find /
17092  be/4  root     0.00 B/s       0.00 B/s      0.00 %     12.71 %  [kworker/u256:0]
476    be/3  root     0.00 B/s       2.28 M/s      0.00 %      5.45 %  [jbd2/sda6-8]


# Total DISK READ:總的磁碟讀取速度。  Total DISK WRITE:總的磁碟寫入速度。
# Actual DISK READ:實際磁碟讀的速度   Actual DISK WRITE:實際磁碟寫的速度

# TID:進程pid值。
# PRIO:優先順序。
# USER:用戶。
# DISKREAD:磁碟讀取速度。
# DISK WRITE:磁碟寫入速度。
# SWAPIN:從swap分區讀取數據占用的百分比。
# IO:I/O占用的百分比。
# COMMAND:消耗I/O的進程名。  
  
#命令選項:   
# -o, -only 只顯示在讀寫硬碟的程式
# -d SEC, -delay=SEC  設定顯示時間間隔。 刷新時間
# 退出,按q或ctrl+C

4. 網路

(1)使用nload監控總體帶寬使用情況

tom@ubuntu1804:~$ nload -u h  # -u:指定數據的單位 h表示寫哦那個會根據數值的大小自動選擇單位 例如M G等
Device eth0 [10.0.0.18] (1/2):
==

Incoming:#進來的網路流量
Curr: 558.33 kBit/s   #當前流量
Avg: 297.12 kBit/s    #平均流量
Min: 1.39 kBit/s      #最小流量
Max: 894.77 kBit/s    #最大流量
Ttl: 58.23 MByte      #流量總和


Outgoing:#出去的網路流浪
Curr: 16.16 kBit/s
Avg: 15.37 kBit/s
Min: 4.52 kBit/s
Max: 32.62 kBit/s
Ttl: 766.79 kByte

(2)使用nethogs找出使用帶寬最多的進程

tom@ubuntu1804:~$ sudo nethogs 
NetHogs version 0.8.5-2

PID    USER     PROGRAM                 DEV         SENT          RECEIVED  
1733   root     wget                    eth0        13.352        4317.425 KB/sec
1605   tom      sshd: tom@pts/0         eth0        1.025         0.07013.276 KB/sec
1732   root     wget  tom@pts/0         eth0        0.000         0.000 KB/sec
?      root     unknown                 TCP         0.000         0.000 KB/sec

TOTAL    0.000     0.000 KB/sec                     14.378        4317.701


# PID:行程 ID。
# USER:行程的擁有者。
# PROGRAM:程式路徑。
# DEV:網路介面。
# SENT:目前傳送數據的速度。
# RECEIVED:目前接收數據的速度

#TOTAL 總計、總和

#快捷鍵:
# m:切換帶寬單位,可用單位有 KB/s、KB、B、MB。
# r:以數據接收速度排序。
# s:以數據傳送速度排序。
# q:離開 NetHogs。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我國目前並未出台專門針對網路爬蟲技術的法律規範,但在司法實踐中,相關判決已屢見不鮮,K 哥特設了“K哥爬蟲普法”專欄,本欄目通過對真實案例的分析,旨在提高廣大爬蟲工程師的法律意識,知曉如何合法合規利用爬蟲技術,警鐘長鳴,做一個守法、護法、有原則的技術人員。 案情介紹 谷米公司為開發和運營“酷米客”A ...
  • Android ViewPager2 + Fragment + BottomNavigationView 聯動 本篇主要介紹一下 ViewPager2 + Fragment + BottomNavigationView , 上篇中把ViewPager2和Fragment 聯動起來了, 本篇主要把 B ...
  • JZ23 鏈表中環的入口結點 描述 給一個長度為n鏈表,若其中包含環,請找出該鏈表的環的入口結點,否則,返回null。 解析 環很大 在前面我們提到過快慢指針,判斷是否有環。如果有環,在來找環的入口。如果沒環直接返回null即可,我們假設是有環的,那麼會有兩種情況,一種是O型,一種是6型,其實原理都 ...
  • Map源碼剖析 HashMap&LinkedHashMap&Hashtable hashMap預設的閾值是0.75 HashMap put操作 put操作涉及3種結構,普通node節點,鏈表節點,紅黑樹節點,針對第三種,紅黑樹節點,我們後續單獨去學習,這裡不多做擴散 final V putVal(i ...
  • 來源:https://www.cnblogs.com/prayjourney/p/9667835.html 在一個應用系統中, 無論使用何種語言開發, 必然存在模塊之間的調用, 調用的方式分為幾種。 1.同步調用 同步調用是最基本並且最簡單的一種調用方式, 類A的方法a()調用類B的方法b(), 一 ...
  • 在Seata的AT模式中,在服務執行完成後,直接進行RM提交和資源釋放,提供了對CAP理論相對平衡的解決方案,並且沒有侵入業務工程; ...
  • 一:背景 1.講故事 這周有個朋友找到我,說他的程式出現了記憶體緩慢增長,沒有回頭的趨勢,讓我幫忙看下到底怎麼回事,據朋友說這個問題已經困擾他快一周了,還是沒能找到最終的問題,看樣子這個問題比較刁鑽,不管怎麼說,先祭出 WinDbg。 二:WinDbg 分析 1. 托管還是非托管泄露 一直關註這個系列 ...
  • Linux 命令及其參數繁多,大多數人都是無法記住全部功能和具體參數意思的。在 linux 終端,面對命令不知道怎麼用,或不記得命令的拼寫及參數時,我們需要求助於系統的幫助文檔; linux 系統內置的幫助文檔很詳細,通常能解決我們的問題,我們需要掌握如何正確的去使用它們。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...