前言
我標題寫的是思路,其實也是工作一天之後坐在牀上靜靜思考,關於linux,怎麼去聊這個事情會好一些。事實上就我個人而言,linux對於一名開發來講需求是比較直接的,其實就是學會看性能就可以了。因爲真實在生產線上的時候同時還會有專業的運維同學,還有一些系統專門去讓我們去看,我們需要挑關鍵點。
從我們日常的Window出發
其實不管是window和linux,我們其實都是會按照一樣的想法去看性能的;我們平時在window用得比較多,當系統負載高的時候我們直觀的感覺就是卡,然後我們會打開我們的任務管理器,看看我們的CPU,看看我們的磁盤,是不是有什麼東西佔用高了。其實這個思路到了linux上面也是一樣的,只不過的話,linux命令行方式多一些,我們只要把window上面看性能的思路遷移到linux就可以。
我們windows是用資源管理器去看的,曲線其實很明朗就可以看到了。
我們可以按照這個思路
CPU->內存->磁盤->網絡,我們按照這個思路來,應該是清晰的。
性能評判的原則
還一個需要強調的是,生產上面其實會有一個原則,一般不能等系統掛了的時候再去處理,通常來說一臺機器(多核)超過60%-70%其實就算壓力比較大了,超過了80%的話其實就已經負荷很高了,這個是我們用來判斷的性能的參考。
命令介紹
我們其實要先知道我們的目的,再介紹命令會比較合適,正如我們想要編輯文檔的時候,我們會有word和wps的介紹,我們其實可以有不止一種的方式去實現我們的這個需求。
linux下的資源監視器
top命令是最常用的,對應我們的windos下面的資源監視器,linux top命令一敲,便是下面的內容
top - 22:33:12 up 467 days, 12:44, 3 users, load average: 2.82, 3.14, 3.33
Tasks: 468 total, 1 running, 467 sleeping, 0 stopped, 0 zombie
Cpu(s): 14.8%us, 0.9%sy, 1.4%ni, 82.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 132244968k total, 75537804k used, 56707164k free, 1201448k buffers
Swap: 33554428k total, 0k used, 33554428k free, 53700216k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
63276 hdfs 20 0 19.7g 8.7g 25m S 356.0 6.9 297879:19 java
2123 root 20 0 49960 2252 1704 S 0.7 0.0 149:44.81 syslog-ng
2152 nscd 20 0 945m 1736 1068 S 0.3 0.0 383:46.29 nscd
......
因爲沒得曲線看,我們需要曉得一下關鍵的字段:
load average 便是我們的系統負載情況,分別表示系統一分鐘 五分鐘 十五分鐘的平均負載
id 全稱的 idle,這個是空閒率,這個當然就是越空閒就係統壓力越小,如果這三個值加起來/3 x100% 超過60% 說明負載比較高 如果超過80%就掛了!
另外top面板上面按1的時候可以切換多核的情況,可以試試。
簡要面板
top命令其實信息太多了,我們其實有個迷你版本的面板
$ uptime
22:41:54 up 467 days, 12:53, 3 users, load average: 3.60, 3.53, 3.40
直接可以查看系統負荷情況
CPU和內存查看
vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU活動進行監控。是對系統的整體情況進行統計。
$ vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 56691984 1201452 53722160 0 0 0 9 0 0 5 1 94 0 0
1 0 0 56692212 1201452 53722164 0 0 0 0 2539 1077 6 0 94 0 0
2 0 0 56692668 1201452 53722168 0 0 0 24 6199 8175 21 0 79 0 0
2是指2秒來一次,3的統計3下的意思,需要關注幾個項目
r其實就是runing的意思,是指線程running
b是block的意思,線程block,這肯定不好,越少越好
us是user是的意思,用戶使用cpu
sy是system的意思,系統使用cpu
us和sy兩個值加起來超過80%,系統壓力大,需要處理了
剩下可以看到內存和其他,稍微看得少些。
內存查看
free -m
free -m
total used free shared buffers cached
Mem: 129145 73937 55207 1 1173 52465
-/+ buffers/cache: 20298 108846
Swap: 32767 0 32767
這條命令就是查看內存,因爲四捨五入,-m的兆的意思,也可以free -g,但是會被捨去很多內存,一般的m
磁盤查看
磁盤這個好說,就是看容量,這個就是滿了就是100%,很容易看
$ df -ah
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 518G 175G 317G 36% /
proc 0 0 0 - /proc
sysfs 0 0 0 - /sys
devpts 0 0 0 - /dev/pts
tmpfs 63G 0 63G 0% /dev/shm
/dev/sda1 190M 27M 153M 15% /boot
none 0 0 0 - /proc/sys/fs/binfmt_misc
磁盤一個查看是需要看讀寫情況
$ iostat -xdk 2 3
Linux 2.6.32-504.23.4.el6.x86_64 03/16/2020 _x86_64_ (24 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 49.04 0.01 5.48 0.23 217.89 79.48 0.01 2.29 0.18 0.10
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- rrqm/s: 每秒進行 merge 的讀操作數目
- wrqm/s:每秒進行 merge 的寫操作數目
- r/s: 每秒完成的讀 I/O 設備次數。即 delta(rio)/s
- w/s:每秒完成的寫 I/O 設備次數。即 delta(wio)/s
- rkB/s: 每秒讀K字節數。是 rsect/s 的一半,因爲每扇區大小爲512字節
- avgrq-sz: 平均每次設備I/O操作的數據大小 (扇區)
- avgqu-sz:平均I/O隊列長度。即 delta(aveq)/s/1000 (因爲aveq的單位爲毫秒)
- await:平均每次設備I/O操作的等待時間 (毫秒)
- svctm: 平均每次設備I/O操作的服務時間 (毫秒)
- %util:一秒中有百分之多少的時間用於 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的。即 delta(use)/s/1000 (因爲use的單位爲毫秒)
如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸
網絡查看
其實可想而知想象得到,我們的網絡應該是xxstat這種形式吧,其實還真是。
網絡的查看是ifstat,不過這個軟件有時候不帶,需要自己安裝
wget http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz
tar -zxvf ifstat-1.1.tar.gz
cd ifstat-1.1
./configure
make
make install
敲命令ifstat就行,這個顯示比較簡單,網卡和上傳下載的速度
eth0 eth1 bond0
KB/s in KB/s out KB/s in KB/s out KB/s in KB/s out
0.00 0.21 0.06 0.00 0.06 0.21
0.00 0.00 0.06 0.15 0.06 0.15
0.00 0.15 0.06 0.00 0.06 0.15
0.00 0.00 0.06 0.15 0.06 0.15
1.24 15.24 0.06 17.02 1.29 32.25
0.14 1.15 0.06 0.20 0.20 1.35
總結
從我們window是遷移的思路是比較清晰的,按照設備+stat這種規律的命令也是比較容易推導出來的。