Linux之我做系統效能調優時常用的一些命令

weixin_33912445發表於2017-05-01

開心一笑

【1.年輕的時候,我們常常衝著鏡子做鬼臉,年老的時候,鏡子算是扯平了。2.男孩窮者養,不然不曉得奮鬥,女孩富著養,不然人家一塊蛋糕就哄走了。3.如果婚姻是愛情的墳墓,那麼我期待有一個人把我埋了。4.睡眠是是一門藝術,誰也不能阻擋我追求藝術的腳步。5.打死你我也不會說。】

提出問題

Linux伺服器檢視效能常用的命令有哪些???

2321678-abee36fc4dfd5c5e.png
QQ截圖20170501111421.png

解決問題

最近工作的任務就是做公司系統效能調優。其中用的比較多的命令,在這裡總結下,大多數都是參考網上大神整理的。我只是把我用到的命令提煉整理下:

輸出系統日誌最後10行 dmesg | tail

ubuntu@ubuntu:~$ dmesg | tail
[38060.138072] e1000: eno16777736 NIC Link is Down
[38068.362442] e1000: eno16777736 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[38070.366445] e1000: eno16777736 NIC Link is Down
[38076.376947] e1000: eno16777736 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[38084.386812] e1000: eno16777736 NIC Link is Down
[38090.411818] e1000: eno16777736 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[38480.597723] e1000: eno16777736 NIC Link is Down
[38495.064487] e1000: eno16777736 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[38607.910407] IPv6: ADDRCONF(NETDEV_UP): eno16777736: link is not ready
[38607.978329] e1000: eno16777736 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

該命令會輸出系統日誌的最後10行。這些日誌可以幫助排查效能問題。

top命令

top命令是進行效能分析最常使用的命令,也是最重要的命令。每個引數代表什麼意思,都必須非常清楚。

top - 07:01:15 up 10:57,  3 users,  load average: 0.00, 0.04, 0.13
Tasks: 238 total,   1 running, 237 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.4 us,  3.8 sy,  0.0 ni, 92.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   2040024 total,  2020312 used,    19712 free,    11220 buffers
KiB Swap:  3142652 total,   927204 used,  2215448 free.   121276 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                   
 6844 root      20   0  333020  20520   3600 S   6.0  1.0  29:48.44 Xorg                                                                      
61687 ubuntu    20   0 1635056  43716  18108 S   3.6  2.1   5:00.27 compiz                                                                    
 5444 ubuntu    20   0 3765292 875688  10020 S   2.7 42.9  42:13.69 java                                                                      
 6788 root      20   0  293028   9284   1112 S   2.3  0.5   0:51.92 dockerd                                                                   
 5175 ubuntu    20   0  578736  22496  14888 S   1.7  1.1   0:04.60 gnome-terminal-                                                           
   27 root      39  19       0      0      0 S   0.7  0.0   0:09.02 khugepaged                                                                
 7932 ubuntu    20   0 3060636  16560 

top命令包含了前面好幾個命令的檢查的內容。比如系統負載情況(uptime)、系統記憶體使用情況(free)、系統CPU使用情況(vmstat)等。因此通過這個命令,可以相對全面的檢視系統負載的來源。同時,top命令支援排序,可以按照不同的列排序,方便查詢出諸如記憶體佔用最多的程式、CPU佔用率最高的程式等。

但是,top命令相對於前面一些命令,輸出是一個瞬間值,如果不持續盯著,可能會錯過一些線索。這時可能需要暫停top命令重新整理,來記錄和比對資料。

第一行:

top - 07:01:15 up 10:57,  3 users,  load average: 0.00, 0.04, 0.13

解釋:

07:01:15    當前時間
up 10:57    系統執行時間,格式為時:分
3 user    當前登入使用者數
load average: 0.00, 0.04, 0.13    系統負載,即任務佇列的平均長度。三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。

第二行和第三行,當有多個CPU時,這些內容可能會超過兩行。內容如下:

total 程式總數
running 正在執行的程式數
sleeping 睡眠的程式數
stopped 停止的程式數
zombie 殭屍程式數
Cpu(s): 
3.4% us 使用者空間佔用CPU百分比
3.8% sy 核心空間佔用CPU百分比
0.0% ni 使用者程式空間內改變過優先順序的程式佔用CPU百分比
92.8% id 空閒CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0%hi:硬體CPU中斷佔用百分比
0.0%si:軟中斷佔用百分比
0.0%st:虛擬機器佔用百分比

最後兩行為記憶體資訊。內容如下:

Mem:
2040024 total    實體記憶體總量
2020312 used    使用的實體記憶體總量
17616k free    空閒記憶體總量
11220 buffers    用作核心快取的記憶體量
Swap: 
3142652 total    交換區總量
927204 used    使用的交換區總量
2215448 free    空閒交換區總量
121276 cached    緩衝的交換區總量,記憶體中的內容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在於記憶體中的交換區的大小,相應的記憶體再次被換出時可不必再對交換區寫入。

程式資訊區統計資訊區域的下方顯示了各個程式的詳細資訊。首先來認識一下各列的含義。

序號  列名    含義
a    PID     程式id
b    PPID    父程式id
c    RUSER   Real user name
d    UID     程式所有者的使用者id
e    USER    程式所有者的使用者名稱
f    GROUP   程式所有者的組名
g    TTY     啟動程式的終端名。不是從終端啟動的程式則顯示為 ?
h    PR      優先順序
i    NI      nice值。負值表示高優先順序,正值表示低優先順序
j    P       最後使用的CPU,僅在多CPU環境下有意義
k    %CPU    上次更新到現在的CPU時間佔用百分比
l    TIME    程式使用的CPU時間總計,單位秒
m    TIME+   程式使用的CPU時間總計,單位1/100秒
n    %MEM    程式使用的實體記憶體百分比
o    VIRT    程式使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
p    SWAP    程式使用的虛擬記憶體中,被換出的大小,單位kb。
q    RES     程式使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
r    CODE    可執行程式碼佔用的實體記憶體大小,單位kb
s    DATA    可執行程式碼以外的部分(資料段+棧)佔用的實體記憶體大小,單位kb
t    SHR     共享記憶體大小,單位kb
u    nFLT    頁面錯誤次數
v    nDRT    最後一次寫入到現在,被修改過的頁面數。
w    S       程式狀態(D=不可中斷的睡眠狀態,R=執行,S=睡眠,T=跟蹤/停止,Z=殭屍程式)
x    COMMAND 命令名/命令列
y    WCHAN   若該程式在睡眠,則顯示睡眠中的系統函式名
z    Flags   任務標誌,參考 sched.h

查詢登入當前系統的使用者資訊:w命令

ubuntu@ubuntu:~$ w
 20:15:44 up 11:17,  3 users,  load average: 0.21, 0.16, 0.16
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
ubuntu   :0       :0               Thu00   ?xdm?  30:09   1.63s /sbin/upstart --user
ubuntu   pts/7    :0               Thu23   45:01m 42:57   8.80s /home/ubuntu/inno/idea-IU-162.2032.8/bin/fsnotifier64
ubuntu   pts/18   :0               06:47    0.00s  0.47s  0.05s w

可查詢登入當前系統的使用者資訊,以及這些使用者目前正在做什麼操作

iostat

執行時,如果出現下面的提示資訊

ubuntu@ubuntu:~$ iostat
The program 'iostat' is currently not installed. You can install it by typing:
sudo apt-get install sysstat

執行下 sudo apt-get install sysstat 即可。

Iostat提供三個報告:CPU利用率、裝置利用率和網路檔案系統利用率,使用-c,-d和-h引數可以分別獨立顯示這三個報告。

記憶體分析命令:free m

ubuntu@ubuntu:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          1992        672       1320          6         22        209
-/+ buffers/cache:        440       1552
Swap:         3068        403       2665

free: 檢視系統記憶體的使用情況,-m參數列示按照兆位元組展示。
最後兩列分別表示用於IO快取的記憶體數,和用於檔案系統頁快取的記憶體數。需要注意的是,第二行-/+ buffers/cache,看上去快取佔用了大量記憶體空間。這是Linux系統的記憶體使用策略,儘可能的利用記憶體,如果應用程式需要記憶體,這部分記憶體會立即被回收並分配給應用程式。因此,這部分記憶體一般也被當成是可用記憶體。如果可用記憶體非常少,系統可能會動用交換區(如果配置了的話),這樣會增加IO開銷(可以在iostat命令中提現),降低系統效能。

檢視CPU的佔用情況 mpstat

顯示每個CPU的佔用情況,如果有一個CPU佔用率特別高,那麼有可能是一個單執行緒應用程式引起的。

ubuntu@ubuntu:~$ mpstat -P ALL 1
Linux 4.2.0-16-generic (ubuntu)     04/30/2017  _x86_64_    (2 CPU)

10:57:30 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10:57:31 PM  all    1.52    0.00    0.51    0.00    0.00    0.51    0.00    0.00    0.00   97.47
10:57:31 PM    0    3.03    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   96.97
10:57:31 PM    1    0.00    0.00    0.00    0.00    0.00    1.02    0.00    0.00    0.00   98.98

讀書感悟

來自《罪與罰》

  • 人這種卑鄙的東西,什麼都會習慣的。
  • 我唯一擔心的是我們明天的生活能否配得上今天所承受的苦難。
  • 胡扯是一切生物種只有人類享有的唯一特權。通過胡扯,可以得到真理。
  • 憑良心行事,可以不惜流血。
  • 貧窮不是罪惡,而極貧就是一種罪惡。
  • 我可以不是英雄,但要做一名勇士。

經典故事

【那天跟老公幸運地訂到了票回婆家,上次後卻發現有位女士坐在我們的位子上,老公示意我先坐在她旁邊的位子,卻沒有請這位女士讓位。我仔細一看,發現她右腳有一點不方便,才瞭解老公為何不請它讓出位子。他就這樣從嘉義一直站到臺北,從頭到尾都沒向這位女士表示這個位子是他的,下了車之後,心疼老公的我跟他說:“讓位是善行,但從嘉義到臺北這麼久,大可中途請她把位子還給你,換你坐一下”老公說:"人家不方便是一輩子,我們就不方便三小時而已”。聽到老公這麼說,我相對感動,有這麼一位善良又為善不欲人知的好老公,讓我覺得世界變得溫柔很多。心念一轉,世界可能從此不同,人生中,每一件事情,都有轉向的能力,就看我們怎麼想,怎麼轉。】

大神文章

如何用命令檢查Linux伺服器效能
linux伺服器效能檢視
監控 Linux 效能的 18 個命令列工具
幾條簡單命令檢查Linux伺服器效能
用十條命令在一分鐘內檢查Linux伺服器效能
linux的top命令引數詳解

其他

如果有帶給你一絲絲小快樂,就讓快樂繼續傳遞下去,歡迎點贊、頂、歡迎留下寶貴的意見、多謝支援!

相關文章