Linux 基礎教程 36-查看系統(tǒng)性能

uptime

? ? uptime命令功能比較簡單,主要功能如下所示:

  • 查看服務器的開機時長
  • 查看CPU負載

基本用法

uptime

用法示例

[root@localhost ~]# uptime
15:33:08 up 10 days,  4:40,  2 users,  load average: 1.56, 1.22, 0.92

輸出內容解釋如下所示:

顯示內容 解釋
15:33:08 系統(tǒng)當前時間
up 10 days, 4:40 主機已運行時間,時間越長,說明機器越穩(wěn)定
2 users 用戶連接數(shù),是總連接數(shù)而不是用戶數(shù)
load average: 1.56, 1.22, 0.92 系統(tǒng)平均負載,統(tǒng)計最近1、5、15分鐘的系統(tǒng)平均負載

系統(tǒng)平均負載:指在某一段時間間隔內運行隊列中的平均進程數(shù)。根據(jù)實際工程經驗來看,單核負載在 0.7 以下是安全的,如超過則需要進行優(yōu)化了。

除了使用uptime外,我們也可以使用以下方式來獲取系統(tǒng)的平均負載情況。

[root@localhost ~]# cat /proc/loadavg
1.32 1.35 1.15 1/5585 28715
  • 前面3個數(shù)字分別表示最近1、5、15分鐘的系統(tǒng)平均負載
  • 1/5585:分母表示系統(tǒng)的總進程數(shù),分子表示正在運行的進程數(shù)
  • 28715:最近一個啟動運行進程的ID

free

? ? free常用來查看系統(tǒng)的可用內存和已使用內存等信息。

基本用法

free [選項]

常用選項如下所示:

選項 解釋
-b 以byte為單位顯示內存使用情況
-k 以KB為單位顯示內存使用情況
-m 以MB為單位顯示內存使用情況
-g 以GB為單位顯示內存使用情況
-t 額外顯示內存總和
-h 以較短的數(shù)字(默認為3位數(shù))進行顯示且增加單位,方便查看
-s time 持續(xù)觀察內存使用情況
-c count 常與-s一直使用,用來設置采樣樣本數(shù)
-l 詳細顯示高峰和低谷時的內存使用統(tǒng)計情況
采用-k/-m/-g/-h顯示的值均采用向下取整的方式顯示,如果需要精確查看,則建議使用-b

用法示例

1、顯示主機內存使用情況

[root@localhost ~]# free -t -m
      total        used        free      shared  buff/cache   available
Mem:  128652       32106       87049     1293      9496       94266
Swap: 4095           0         4095
Total:132748       32106       91145

輸出內解釋如下所示:

total:可用物理內存總量
used:已經使用的內存數(shù),包含buff/cache
free:可使用的內存數(shù),不含buff/cache
share:多個進程共享的內存數(shù)
buff/cache:buff/cache占用量
Swap:交換分區(qū)使用量,虛擬內存
Total:物理內存總數(shù)

vmstat

? ? vmstat是一個Linux監(jiān)控工具,全稱為Virtual Memory Statistics。可用于查看關于進程、內存、I/O、等系統(tǒng)整體運行狀態(tài)。

基本用法

vmstat [選項] [采樣間隔] [采樣樣本數(shù)]

常用選項如下所示:

選項 解釋
-a 顯示活動/非活動的內存信息
-f 顯示自系統(tǒng)啟動以來的系統(tǒng)創(chuàng)建的總任務數(shù)
-t 增加時間戳
-m 顯示slabinfo信息
-n 頭部信息僅顯示一次
-s 以表格形式顯示內存指標及系統(tǒng)事件信息等
-d 顯示各磁盤的統(tǒng)計信息
-p 顯示特定分區(qū)的詳細統(tǒng)計信息
delay 設置兩次更新之間的時間間隔,如果不指定,則默認顯示從開機到現(xiàn)在的平均值
count 指定采樣的樣本數(shù),如delay指定而count不指定則一直持續(xù)監(jiān)控和輸出

用法示例

1、常用用法

vmstat delay count
- delay:采樣時間間隔
- count:采樣的樣本數(shù)
01vmstat詳細解釋.jpg

2、查看服務器創(chuàng)建了多少個任務數(shù)

[root@localhost ~]# vmstat -f
     51221915 forks

3、顯示特定分區(qū)的統(tǒng)計信息:

[root@localhost ~]# vmstat -p /dev/sdb1
sdb1          reads   read sectors  writes    requested writes
               754      35990         81      22102

結果分析

? ? 對于vmstat出來的統(tǒng)計結果,如何判定是否存在問題了?不同的服務器、操作系統(tǒng)、應用場景等均不一樣,也無法給出統(tǒng)一的判斷標準,需要大家根據(jù)實際情況進行綜合判斷。以下是一些實際應用中的經驗,僅供參考:

  • 1、如果cache的值比較大,則說明系統(tǒng)緩存了比較多的磁盤數(shù)據(jù),有利于磁盤I/O性能的提升,此時,bi會相對較小,因為很多讀寫磁盤的操作都由cache來承擔了。
  • 2、si和so則代表讀寫SWAP的數(shù)量,這兩個值如果長期大于0,則表示系統(tǒng)需要經常讀寫交換分區(qū),這樣會消耗CPU資源和磁盤I/O性能。如能確定物理內存存在瓶頸,則需要進行擴容或遷移了。
  • 3、如free的值很低,基于接近于0,也不一定就是系統(tǒng)內存已經耗盡,還需要結合buffer和cache的使用量,如果buffer和cache占用了很多內存資源,則代表沒有問題,說明系統(tǒng)把空閑的內存都用于緩存,反而是提升了I/O性能,當系統(tǒng)需要內存時,buffer和cache可以隨時被回收回來。
  • 4、如果bi和bo值很大,則說明系統(tǒng)正在進行大量的磁盤讀寫操作。如果是用戶正在進行的操作,則沒有問題,否則需要進行排查哪個設備或分區(qū)在進行大量讀寫操作。
  • 5、如果us的值經常大于50%,則說明用戶進程占用的CPU時間比較多,需要對占用較多的程序進行排查和優(yōu)化了。
  • 6、如果sy值比較高,需要排查系統(tǒng)是否存在問題。
  • 7、如果wa值比較高,則說明CPU總是在等待I/O操作,說明磁盤已經成為瓶頸,需要排查磁盤是否存在問題或優(yōu)化程序的讀寫操作
  • 8、如果r值總是超過CPU核數(shù),則說明CPU可能成為瓶頸,可考核升級CPU等

mpstat

? ? mpstat全稱Multiprocessor statistics,也是一個監(jiān)控工具,主要對象是CPU。

基本用法

mpstat [選項] [采樣間隔] [采樣樣本數(shù)]

常用選項如下所示:

選項 解釋
-I 顯示中斷統(tǒng)計信息
-P 顯示指定CPU編號的統(tǒng)計信息,0為第一個CPU
-u 顯示CPU的使用情況
-A 等同于-u -I ALL -P ALL
與-I一起使用的參數(shù)如下所示
- SUM:顯示所有CPU中斷次數(shù)之和
- CPU:顯示每個CPU中斷次數(shù)
- ALL:將SUM和CPU的內容一起顯示

與-P一起使用的參數(shù)如下所示
- ON:僅統(tǒng)計在線的CPU使用情況
- ALL:統(tǒng)計所有CPU的使用情況

CPU常用指標

? ? 該指標一般是使用選項-u出來的統(tǒng)計結果,如下所示:

指標 解釋
CPU CPU編號
%usr 用戶進程所使用的CPU占比
%nice 對進程進行降級時的CPU占比
%sys 內核進行使用的CPU占比
%iowait 空閑態(tài)中等待I/O請求所使用的CPU占比
%irq 處理系統(tǒng)中斷所使用的CPU占比
%soft 軟件中斷所使用的CPU占比
%steal 虛擬管理程序所使用的CPU占比
%guest 運行虛擬處理器所使用的CPU占比
%gnice 運行降級虛擬程序所使用的CPU占比
%idle CPU空閑態(tài)的CPU占比

用法示例

1、查看所有CPU運行狀態(tài)


02mpstat示例1.jpg

2、查看指定CPU編號的運行狀態(tài)


03mpstat示例2.jpg

3、查看CPU中斷情況

    因為CPU的運算速度比外部硬件要快很多。以硬盤為例,如果是簡單的順序執(zhí)行,則CPU需要等待很長
時間,不停詢問硬盤是否讀取完成,而這樣會浪費很多CPU時間。為此人們提出一種中斷機制,使得讀取硬
盤這樣的操作交給其他設備來完成,而CPU則掛起當前進程,將控制權轉讓給其他來處理的進程,當其他設
備處理完成后通知CPU,系統(tǒng)將當前進程標識為活動進行,從而繼續(xù)執(zhí)行,處理硬盤的讀取操作。
04mpstat示例3.jpg

top

? ? top是Linux中一個常用的性能監(jiān)控工具并能周期性地進行更新,我們因此也可以快速了解服務器的運行狀態(tài)。

基本用法

top [選項]

常用的選項如下所示:

選項 解釋
-b 以批處理模式進行操作
-c 顯示完整的命令信息
-d 更新時間間隔
-n number 指定循環(huán)顯示的次數(shù)
-u number/name 顯示指定用戶ID/用戶名的進程
-p pid 顯示指定PID的進程
-s 安全模式
-S 累積模式

交互模式

? ? 交換械是指在top顯示相關信息時,在不影響顯示信息的同時進行的其他操作等,詳細如下所示:

快捷鍵 說明
f 添加或刪除進程信息項
k 終止進程,需要輸入PID號
r 更改進程優(yōu)先級
S 切換到累積模式
s或d 更改刷新時間
m 切換顯示內存信息
t 切換顯示進程和CPU狀態(tài)信息
c 切換顯示命令名稱和完整命令行
P 根據(jù)CPU使用率大小進行排序
T 根據(jù)時間/累計時間進行排序
W 將當前設置保存到~/.toprc文件中
q 退出top進程
b 將當前進程進行高亮顯示
l 是否顯示系統(tǒng)負載信息和啟動時間
1(數(shù)字1) 顯示每個CPU核心單獨的性能數(shù)據(jù)

用法示例

1、第一個示例:


05top示例1.jpg

示例詳解

  • 系統(tǒng)級信息


    05top示例詳細講解-1.jpg
  • 進程指標信息

指標 說明 參考值
PID 進程ID
PRID 父進程ID
USER 進程所屬用戶,啟用進程的用戶名
PR Priority縮寫,進程優(yōu)先級
NI Nice縮寫,用于調節(jié)優(yōu)先級,與PR有關,越小越早被執(zhí)行 -20~20 正數(shù)優(yōu)先級降低,負數(shù)優(yōu)先級提升
VIRT 進程虛擬內存使用量
RES 進程使用且未被交換出的物理內存使用量
SHR 共享內存使用量
S 進程狀態(tài) R:運行 S:睡眠 D:不可中斷的睡眠狀態(tài) T:跟蹤、停止 僵尸
%CPU CPU使用率
%MEM 內存使用率
TIME+ 進程的CPU使用時間累積和 單位為1/100秒
TIME 進程占用的CPU時間累積和 單位為秒
RUSER 進程的實際用戶名,即登錄到Shell所用用戶名
UID 進程所屬用戶的ID
GROUP 進程所屬的組名
TTY 啟動進程的終端名稱
P 進程最近一次所使用的CPU編號
SWAP 進程使用且被交換出來的虛擬內存使用量
CODE 進程對應的可執(zhí)行代碼所占用的物理內存量
DATA 進程對應的數(shù)據(jù)部分(數(shù)據(jù)段、棧等)所占用的物理內存量
nFLT 頁面錯誤次數(shù)
nDRT 最后一次寫入到目前為止被修改過的頁面數(shù)
WCHAN 如果進程處理睡眠狀態(tài),則顯示睡眠狀態(tài)中系統(tǒng)調用名
Flags 進程標志
COMMAND 進程所對應的命令名

iostat

? ? iostat命令主要用來CPU的統(tǒng)計信息和每個設備、硬盤的IO統(tǒng)計信息

基本用法

iostat [選項] [采樣間隔] [采樣樣本數(shù)]

常用的選項如下所示:

選項 解釋
-c 僅顯示CPU的統(tǒng)計信息,即單獨輸出CPU的平均統(tǒng)計信息
-d 僅顯示設備的統(tǒng)計信息
-h 將各設備的統(tǒng)計信息以易于查看的方式進行顯示
-k 以kb/s顯示統(tǒng)計信息
-m 以mb/s顯示統(tǒng)計信息
-t 增加顯示時間戳
-x 顯示額外信息
-y 忽略自系統(tǒng)啟動以來的第一行信息

用法示例

1、iostat示例


06iostat示例1.jpg

2、查看硬盤的IO信息


06iostat示例2.jpg

各指標詳細解釋如下所示:

指標 說明
tps 每秒進程的I/O讀寫請求總數(shù)
MB_read/s 每秒讀取的字節(jié)數(shù),單位為MB/s
MB_wrtn/s 每秒寫入的字節(jié)數(shù),單位為MB/s
MB_read 讀取的字節(jié)總數(shù) ,單位為MB
MB_wrtn 寫入的字節(jié)總數(shù) ,單位為MB
看到第一組第一行的數(shù)字非常大,是否就可以斷定I/O存在問題了? 在iostat輸出的第一組第一行數(shù)據(jù),
表示是自Linux系統(tǒng)啟動剛才本命令執(zhí)行這段期間的統(tǒng)計結果,而后面的幾組數(shù)據(jù)才真正表示了在iostat
采樣周期的統(tǒng)計結果,而如果要排除第一組的數(shù)據(jù)可以使用選項 -y

3、顯示額外的統(tǒng)計信息


06iostat示例3.jpg

各指標詳細解釋如下所示:

指標 說明
rrqm/s 每秒對該設備的讀取請求總次數(shù)
wrqm/s 每秒對該設備的寫入請求總次數(shù)
r/s 每秒完成讀取的I/O次數(shù)
w/s 每秒完成寫入的I/O次數(shù)
rMB/s 每秒實際讀取的大小,單位為MB
wMB/s 每秒實際寫入的大小,單位為MB
avgrq-sz 平均每次I/O操作的數(shù)據(jù)大小
avgqu-sz 平均等待處理I/O操作的隊列長度
await 平均每次I/O請求等待時間(含等待時間和處理時間),一般應低于5ms
r_await 每次讀取I/O請求等待時間
w_await 每次寫入I/O請求等待時間
svctm 平均每次I/O操作的服務時間
%util 周期內用于I/O操作的時間比率,即I/O隊列非空的時間比率,即(r/s+w/s )*(svctm/1000)

需要關注的參數(shù)如下所示:

  • %util:表示磁盤的忙碌情況,較大則代表I/O請求太多,硬盤可能存在瓶頸,一般不超過80%
  • await大于svctm:差值越小,則說明隊列時間越短,反之差值越大,則隊列時間越長,系統(tǒng)可能存在問題
  • svctm接近await,則說明I/O幾乎沒有等待時間
  • await遠大于svctm,則說明I/O隊列太長,則響應時間會變長

4、顯示CPU統(tǒng)計信息


06iostat示例4.jpg

各指標詳細解釋如下所示:

指標 說明
%user 顯示CPU在用戶級(應用程序)執(zhí)行時的時間占比
%nice 顯示CPU在用戶級(應用程序)使用NICE權限執(zhí)行時的時間占比
%system 顯示CPU在系統(tǒng)級(內核)執(zhí)行時的時間占比
%iowait 顯示CPU在空閑狀態(tài)期間未完成的磁盤I/O時間占比
%steal 顯示hypervisor服務另一個虛擬處理器時,虛擬CPU等待實際CPU的時間占比
%idle 顯示CPU在空閑狀態(tài)期間系統(tǒng)未完成的磁盤I/O時間占比
  • 如果steal值比較高的話,需要擴容虛擬機,這是因為服務器上的另一個虛擬機可能擁有更大更多的CPU時間片而占用了你的虛擬機的CPU時間
  • 如果iowait值比較高,則可能硬盤存在I/O瓶頸
  • 如果idle值比較高,則表示CPU長期處于空閑狀態(tài)
  • 如果idle值比較高但系統(tǒng)響應慢時,則有可能是CPU在等待內存分配,可考慮擴容內存容量
  • 如果idle值如果長期低于10%,則CPU處理能力是瓶頸
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 關于Mongodb的全面總結 MongoDB的內部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,302評論 2 89
  • linux系統(tǒng)性能監(jiān)視命令,經過百度谷歌,加上各渠道獲得,查找到相關命令匯集,望能學有所收獲 ...
    _王子_閱讀 1,508評論 3 13
  • 因為整理房間的關系,高中的畢業(yè)紀念冊又被從抽屜里拿了出來,一時之間,就像近鄉(xiāng)情怯一樣,我有點害怕去打開它,記憶中的...
    文慈閱讀 733評論 0 0
  • 鄰居小胖是個三十來歲,哪里有好吃的,就往哪里鉆的標準吃貨男一枚。因為工作的原因(他是名鐵路警察,每周工作日就是跟著...
    Danne008閱讀 271評論 0 0
  • 這是我第一次接觸嗩吶,真正的欣賞它。 從前,在那黃河畔,嗩吶真正是一種極為榮耀的東西,紅白喜事,無一不需要嗩吶,連...
    迷途知返的牛噠噠閱讀 381評論 0 0

友情鏈接更多精彩內容