最近幫助現場分析服務器的卡頓和使用情況,記錄一下用到過的一些命令行
1.top 命令監控所有服務的佔用情況
記錄下相關數據對應的信息
1.1 第一行
top - 14:09:54 up 55 days, 21:49, 3 users, load average: 1.51, 1.92, 2.12
翻譯過來就是:
系統時間:14:09:54 運行時間:55 days, 21:49 當前登錄用戶數:3個 負載均衡:load average: 1.51, 1.92, 2.12
ps:
- 1.load average三個數字分別是 1分鐘、5分鐘、15分鐘前的狀態
- load average數據是每隔5秒鐘檢查一次活躍的進程數,然後按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了
1.2 第二行(進程狀態)
Tasks: 813 total, 1 running, 812 sleeping, 0 stopped, 0 zombie
翻譯:
總進程: 813total 運行:1 running 休眠:812 sleeping 停止: 0 stopped 殭屍進程: 0 zombie
1.3 第三行(CPU)
%Cpu(s): 1.2 us, 2.5 sy, 0.0 ni, 96.2 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
翻譯:
1.2us(用戶空間佔用百分比) 2.5 sy(系統內核佔用百分比) 0.0 ni(改變過優先級的進程佔用CPU的百分比) 96.2 id(空閒cpu百分比) 0.0 wa(等待IO的百分比) 0.1 si(硬中斷百分比) 0.0 st(軟中斷百分比)
這裏關注用戶佔用和空閒cpu百分比
1.4 第四行(內存佔用)
KiB Mem : 12359781+total, 26104952 free, 44029052 used, 53463812 buff/cache
翻譯:
`total 總內存
free 空閒內存
used 已被使用
buffer/cache 緩存
`
1.5 第五行(swap交換分區)
KiB Swap: 0 total, 0 free, 0 used. 74735824 avail Mem
可用內存=free + buffer + cached
ps:這個就關注used,這個最好不被使用,如果被使用,說明服務器已經到內存佔用非常嚴重的情況了
1.6 表格類數據
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
翻譯:
- PID 服務進程ID
- USER 進程的所有人
- PR 進程優先級
- NI nice值,會出現負值,負值優先級更高
- VIRT 進程使用虛擬內存總量
- RES 共享內存大小
- kbS(簡略爲S) —進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=殭屍進程
- %CPU 上次更新到現在的CPU時間佔用百分比
- %MEM 進程使用的物理內存百分比
- TIME+ — 進程使用的CPU時間總計,單位1/100秒
- COMMAND — 進程名稱(命令名/命令行)
2. top命令行詳解
top的使用方式 top [-d number] | top [-bnp]
參數 | 含義 |
---|---|
-d number | number代表秒數,表示top命令顯示的頁面更新一次的間隔 (default=5s) |
-b | 以批次的方式執行top |
-n | 與-b配合使用,表示需要進行幾次top命令的輸出結果 |
-p | 指定特定的pid進程號進行觀察 |
top命令顯示的頁面還可以輸入以下按鍵執行相應的功能(注意大小寫區分的)
參數 | 含義 |
---|---|
? | 顯示在top當中可以輸入的命令 |
P | 以CPU的使用資源排序顯示 |
M | 以內存的使用資源排序顯示 |
N | 以pid排序顯示 |
T | 由進程使用的時間累計排序顯示 |
k | 給某一個pid一個信號,可以用來殺死進程(9) |
r | 給某個pid重新定製一個nice值(即優先級) |
q | 退出top(用ctrl+c也可以退出top) |
3. free 命令
使用free -h
可以查看linux的內存使用狀態
各自的含義如下所示:
total 是總內存數;
used 是已經使用的內存數;
free 是空閒的內存數;
shared 是多個進程共享的內存總數;
buffers 是緩衝內存數;
cached 是緩存內存數
ps:使用free -m
也是可以的,而且還可以用MB爲單位
4.iostat 命令
iostat是I/O statistics(輸入/輸出統計)的縮寫,iostat工具將對系統的磁盤操作活動進行監視。它的特點是彙報磁盤活動統計情況,同時也會彙報出CPU使用情況。iostat也有一個弱點,就是它不能對某個進程進行深入分析,僅對系統的整體情況進行分析
4.1 安裝服務
部分設備無法直接使用這個服務,需要提前安裝服務
# iostat屬於sysstat軟件包。可以直接安裝。
yum install sysstat -y
4.2 使用
iostat 命令結果如下
cpu屬性值說明:
%user:CPU處在用戶模式下的時間百分比。
%nice:CPU處在帶NICE值的用戶模式下的時間百分比。
%system:CPU處在系統模式下的時間百分比。
%iowait:CPU等待輸入輸出完成時間的百分比。
%steal:管理程序維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比。
%idle:CPU空閒時間百分比。
tps:該設備每秒的傳輸次數
kB_read/s:每秒從設備(drive expressed)讀取的數據量;
kB_wrtn/s:每秒向設備(drive expressed)寫入的數據量;
kB_read: 讀取的總數據量;
kB_wrtn:寫入的總數量數據量