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ù)。根據實際工程經驗來看均践,單核負載在 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ù)
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)一的判斷標準,需要大家根據實際情況進行綜合判斷驹马。以下是一些實際應用中的經驗,僅供參考:
- 1、如果cache的值比較大检诗,則說明系統(tǒng)緩存了比較多的磁盤數(shù)據,有利于磁盤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)
2、查看指定CPU編號的運行狀態(tài)
3庐冯、查看CPU中斷情況
因為CPU的運算速度比外部硬件要快很多孽亲。以硬盤為例,如果是簡單的順序執(zhí)行展父,則CPU需要等待很長
時間返劲,不停詢問硬盤是否讀取完成玲昧,而這樣會浪費很多CPU時間。為此人們提出一種中斷機制篮绿,使得讀取硬
盤這樣的操作交給其他設備來完成孵延,而CPU則掛起當前進程,將控制權轉讓給其他來處理的進程亲配,當其他設
備處理完成后通知CPU尘应,系統(tǒng)將當前進程標識為活動進行,從而繼續(xù)執(zhí)行吼虎,處理硬盤的讀取操作犬钢。
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 | 根據CPU使用率大小進行排序 |
T | 根據時間/累計時間進行排序 |
W | 將當前設置保存到~/.toprc文件中 |
q | 退出top進程 |
b | 將當前進程進行高亮顯示 |
l | 是否顯示系統(tǒng)負載信息和啟動時間 |
1(數(shù)字1) | 顯示每個CPU核心單獨的性能數(shù)據 |
用法示例
1歹颓、第一個示例:
示例詳解
-
系統(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ù)據部分(數(shù)據段、棧等)所占用的物理內存量 | |
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示例
2蹦误、查看硬盤的IO信息
各指標詳細解釋如下所示:
指標 | 說明 |
---|---|
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ù)據,
表示是自Linux系統(tǒng)啟動剛才本命令執(zhí)行這段期間的統(tǒng)計結果距糖,而后面的幾組數(shù)據才真正表示了在iostat
采樣周期的統(tǒng)計結果玄窝,而如果要排除第一組的數(shù)據可以使用選項 -y
3牵寺、顯示額外的統(tǒng)計信息
各指標詳細解釋如下所示:
指標 | 說明 |
---|---|
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ù)據大小 |
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)計信息
各指標詳細解釋如下所示:
指標 | 說明 |
---|---|
%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處理能力是瓶頸