top命令算是最直觀、好用的查看服務器負載的命令了。它實時動態刷新顯示服務器狀態信息,且可以通過交互式命令自定義顯示內容,非常強大。
在終端中輸入top
,回車后會顯示如下內容:
top - 21:48:39 up 8:57, 2 users,
load average:
0.36,
0.24,
0.14
Tasks:
322 total,
2 running,
320 sleeping,
0 stopped,
0 zombie
%Cpu(s):
5.0 us,
1.7 sy,
0.0 ni,
93.0
id,
0.0 wa,
0.3 hi,
0.0 si,
0.0 st
KiB Mem:
1010504 total,
937416 used,
73088 free,
23708 buffers
KiB Swap:
1046524 total,
280708 used,
765816 free.
365556 cached Mem
PID
USER PR NI VIRT RES SHR S %CPU %MEM
TIME+ COMMAND
8096 root
20
0
320624
38508
21192 S
1.7
3.8
0:41.03 Xorg
13536 tabalt
20
0
697336
104272
56776 S
1.7
10.3
0:08.29 gnome-langu+
9426 tabalt
20
0
1213228
72976
16860 S
1.0
7.2
2:07.27 compiz
197 root
20
0
0
0
0 S
0.3
0.0
0:36.13 kworker/0:2
1009 root
20
0
303112
3392
1500 S
0.3
0.3
0:00.93 polkitd
9670 tabalt
20
0
325932
4300
2256 S
0.3
0.4
0:40.27 vmtoolsd
14016 root
25
5
43940
2408
2000 S
0.3
0.2
0:01.12
http
14149 tabalt
20
0
591180
19504
12820 S
0.3
1.9
0:00.45 gnome-termi+
1 root
20
0
33648
1972
744 S
0.0
0.2
0:01.79 init
2 root
20
0
0
0
0 S
0.0
0.0
0:00.00 kthreadd
3 root
20
0
0
0
0 S
0.0
0.0
0:02.80 ksoftirqd/0
4 root
20
0
0
0
0 S
0.0
0.0
0:00.00 kworker/0:0
5 root
0
-20
0
0
0 S
0.0
0.0
0:00.00 kworker/0:0H
7 root
20
0
0
0
0 S
0.0
0.0
0:05.55 rcu_sched
8 root
20
0
0
0
0 R
0.0
0.0
0:03.43 rcuos/0
9 root
20
0
0
0
0 S
0.0
0.0
0:00.00 rcuos/1
10 root
20
0
0
0
0 S
0.0
0.0
0:00.00 rcuos/2
一、系統信息統計
前五行是系統整體狀態的統計信息展示區域。下面分別介紹每一行中的內容:
1、第一行顯示服務器概況
如下所示,第一行列出了服務器運行了多長時間,當前有多少個用戶登錄,服務器的負荷情況等,使用uptime
命令能獲得同樣的結果。
top - 21:48:39 up 8:57, 2 users,
load average:
0.36,
0.24,
0.14
/ / /
當前時間 運行時長 當前登錄用戶數 平均負載(1分鐘、5分鐘、15分鐘)
平均負載的值越小代表系統壓力越小,越大則代表系統壓力越大。通常,我們會以最后一個數值,也就是15分鐘內的平均負載作為參考來評估系統的負載情況。
對于只有單核cpu的系統,1.0
是該系統所能承受負荷的邊界值,大于1.0則有處理需要等待。
一個單核cpu的系統,平均負載的合適值是0.7
以下。如果負載長期徘徊在1.0,則需要考慮馬上處理了。超過1.0的負載,可能會帶來非常嚴重的后果。
當然,多核cpu的系統是在前述值的基礎上乘以cpu內核的個數。如對于多核cpu的系統,有N個核則所能承受的邊界值為N.0
。
可以使用如下命令來查看每個處理器的信息:
cat /proc/cpuinfo
如果只想計算有多少個cpu內核,可以使用如下命令:
cat /proc/cpuinfo | grep 'model name' | wc -l
2、第二行是進程信息:
Tasks: 322 total, 2 running, 320 sleeping, 0 stopped, 0 zombie
/ / / / /
進程總數 正運行進程數 睡眠進程數 停止進程數 僵尸進程數
3、第三行是CPU信息:
%Cpu(s):
5.0 us 用戶空間CPU占比
1.7 sy 內核空間CPU占比
0.0 ni 用戶進程空間改過優先級的進程CPU占比
93.0 id 空閑CPU占比
0.0 wa 待輸入輸出CPU占比
0.3 hi 硬中斷(Hardware IRQ)CPU占比
0.0 si 軟中斷(Software Interrupts)CPU占比
0.0 st -
4、第四行是內存信息:
KiB Mem: 1010504 total, 937416 used, 73088 free, 23708 buffers
/ / / /
物理內存總量 使用中總量 空閑總量 緩存的內存量
5、第五行是swap交換分區信息:
KiB Swap: 1046524 total, 280708 used, 765816 free, 365556 cached Mem
/ / / /
交換區總量 使用中總量 空閑總量 緩存的內存量
二、進程(任務)狀態監控
第七行及以下顯示了各進程(任務)的狀態監控。各列所代表的含義如下:
PID 進程id
USER 進程所有者
PR 進程優先級
NI nice值。負值表示高優先級,正值表示低優先級
VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR 共享內存大小,單位kb
S 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
%CPU 上次更新到現在的CPU時間占用百分比
%MEM 進程使用的物理內存百分比
TIME+ 進程使用的CPU時間總計,單位1/100秒
COMMAND 進程名稱(命令名/命令行)
三、與top交互
- 按鍵
b
打開或關閉 運行中進程的高亮效果 - 按鍵
x
打開或關閉 排序列的高亮效果 shift + >
或shift + <
可以向右或左改變排序列f
鍵,可以進入編輯要顯示字段的視圖,有 * 號的字段會顯示,無 * 號不顯示,可根據頁面提示選擇或取消字段。
以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構、高可擴展、高性能、高并發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家,需要
PHP進階架構師>>>視頻、面試文檔免費獲取?shimo.im
或 者關注咱們下面的知乎專欄
PHP架構師圈子?zhuanlan.zhihu.com