Linux性能檢測常用的10個基本命令

本文的內(nèi)容主要來自對Netflix的一篇技術(shù)博客( Linux Performance Analysis in 60,000 Milliseconds(可能需要翻墻才能訪問) )泽论,并添加了一些自己的理解逾苫,僅供參考呜袁。

一但壮、常用檢測性能的10個基本命令

1. uptime

$ uptime 
23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02

該命令可以大致的看出計算機(jī)的整體負(fù)載情況,load average后的數(shù)字分別表示計算機(jī)在1min、5min、15min內(nèi)的平均負(fù)載。

2. dmesg | tail

$ dmesg | tail
[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
[...]
[1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child
[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB
[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request.  Check SNMP counters.

打印內(nèi)核環(huán)形緩存區(qū)中的內(nèi)容扫俺,可以用來查看一些錯誤;

上面的例子中固翰,顯示進(jìn)程18694 因引內(nèi)存越界被kill掉以及TCP request被丟棄的錯誤狼纬。通過dmesg可以快速判斷是否有導(dǎo)致系統(tǒng)性能異常的問題羹呵。

3. vmstat 1

$ vmstat 1
procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
34  0    0 200889792  73708 591828    0    0     0     5    6   10 96  1  3  0  0
32  0    0 200889920  73708 591860    0    0     0   592 13284 4282 98  1  1  0  0
32  0    0 200890112  73708 591860    0    0     0     0 9501 2154 99  1  0  0  0
32  0    0 200889568  73712 591856    0    0     0    48 11900 2459 99  0  0  0  0
32  0    0 200890208  73712 591860    0    0     0     0 15898 4840 98  1  1  0  0
^C

打印進(jìn)程、內(nèi)存疗琉、交換分區(qū)冈欢、IO和CPU等的統(tǒng)計信息;

vmstat的格式如下

vmstat [options] [delay [count]]

vmstat第一次輸出表示從開機(jī)到vmstat運行時的平均值盈简;剩余輸出的都是在指定的時間間隔內(nèi)的平均值凑耻,上述例子中delay的值設(shè)置為1,除第一次以外柠贤,剩余的都是1秒統(tǒng)計一次香浩,count未設(shè)置,將會一直循環(huán)打印臼勉。

$ vmstat 10 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 2527112 1086888 13720228    0    0     1    14    2    1  1  1 99  0  0
 0  0      0 2527156 1086888 13719856    0    0     0   104 3003 4901  0  0 99  0  0
 0  0      0 2526412 1086888 13719904    0    0     0    10 3345 4870  0  1 99  0  0

上述的例子中delay設(shè)置為10邻吭,count設(shè)置為3,表示每行打印10秒內(nèi)的平均值宴霸,只打印3次囱晴。

需要檢查的列

  • r:表示正在運行或者等待CPU調(diào)度的進(jìn)程數(shù)。因為該列數(shù)據(jù)不包含I/O的統(tǒng)計信息猖败,因此可以用來檢測CPU是否飽和速缆。若r列中的數(shù)字大于CPU的核數(shù)降允,表示CPU已經(jīng)處于飽和狀態(tài)恩闻。
  • free:當(dāng)前剩余的內(nèi)存;
  • si, so:交換分區(qū)換入和換出的個數(shù)剧董,若換入換出個數(shù)大于0幢尚,表示內(nèi)存不足;
  • us, sy, id, wa:CPU的統(tǒng)計信息翅楼,分別表示user time尉剩、system time(kernel)、idle毅臊、wait I/O理茎。I/O處理所用的時間包含在system time中,因此若system time超過20%管嬉,則I/O可能存在瓶頸或異常皂林;

4. mpstat -P ALL 1

$ mpstat -P ALL
Linux 3.10.0-229.el7.x86_64 (localhost.localdomain)     05/30/2018  _x86_64_    (16 CPU)

04:03:55 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:03:55 PM  all    3.67    0.00    0.61    0.71    0.00    0.00    0.00    0.00    0.00   95.02
04:03:55 PM    0    3.52    0.00    0.57    0.76    0.00    0.00    0.00    0.00    0.00   95.15
04:03:55 PM    1    3.83    0.00    0.61    0.71    0.00    0.00    0.00    0.00    0.00   94.85
04:03:55 PM    2    3.80    0.00    0.61    0.60    0.00    0.00    0.00    0.00    0.00   94.99
04:03:55 PM    3    3.68    0.00    0.58    0.60    0.00    0.00    0.00    0.00    0.00   95.13
04:03:55 PM    4    3.54    0.00    0.57    0.60    0.00    0.00    0.00    0.00    0.00   95.30
[...]

該命令用于每秒打印一次每個CPU的統(tǒng)計信息,可用于查看CPU的調(diào)度是否均勻蚯撩。

5. pidstat 1

$ pidstat 1
Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU)

07:41:02 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
07:41:03 PM     0         9    0.00    0.94    0.00    0.94     1  rcuos/0
07:41:03 PM     0      4214    5.66    5.66    0.00   11.32    15  mesos-slave
07:41:03 PM     0      4354    0.94    0.94    0.00    1.89     8  java
07:41:03 PM     0      6521 1596.23    1.89    0.00 1598.11    27  java
07:41:03 PM     0      6564 1571.70    7.55    0.00 1579.25    28  java
07:41:03 PM 60004     60154    0.94    4.72    0.00    5.66     9  pidstat

07:41:03 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
07:41:04 PM     0      4214    6.00    2.00    0.00    8.00    15  mesos-slave
07:41:04 PM     0      6521 1590.00    1.00    0.00 1591.00    27  java
07:41:04 PM     0      6564 1573.00   10.00    0.00 1583.00    28  java
07:41:04 PM   108      6718    1.00    0.00    0.00    1.00     0  snmp-pass
07:41:04 PM 60004     60154    1.00    4.00    0.00    5.00     9  pidstat
^C

該命令用于打印各個進(jìn)程對CPU的占用情況础倍,類似top命令中顯示的內(nèi)容。pidstat的優(yōu)勢在于胎挎,可以滾動的打印進(jìn)程運行情況沟启,而不像top那樣會清屏忆家。

上述例子中,%CPU中兩個java進(jìn)程的cpu利用率分別達(dá)到了1590%和1573%德迹,表示java進(jìn)程占用了16顆CPU芽卿。

6. iostat -xz 1

類似vmstat,第一次輸出的是從系統(tǒng)開機(jī)到統(tǒng)計這段時間的采樣數(shù)據(jù)胳搞;

$ iostat -xz 1
Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          73.96    0.00    3.73    0.03    0.06   22.21

Device:   rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda        0.00     0.23    0.21    0.18     4.52     2.08    34.37     0.00    9.98   13.80    5.42   2.44   0.09
xvdb        0.01     0.00    1.02    8.94   127.97   598.53   145.79     0.00    0.43    1.78    0.28   0.25   0.25
xvdc        0.01     0.00    1.02    8.86   127.79   595.94   146.50     0.00    0.45    1.82    0.30   0.27   0.26
dm-0        0.00     0.00    0.69    2.32    10.47    31.69    28.01     0.01    3.23    0.71    3.98   0.13   0.04
dm-1        0.00     0.00    0.00    0.94     0.01     3.78     8.00     0.33  345.84    0.04  346.81   0.01   0.00
dm-2        0.00     0.00    0.09    0.07     1.35     0.36    22.50     0.00    2.55    0.23    5.62   1.78   0.03
[...]
^C

檢查列

  • r/s, w/s, rkB/s, wkB/s蹬竖,表示每秒向I/O設(shè)備發(fā)出的reads、writes流酬、read Kbytes币厕、write Kbytes的數(shù)量。
  • await芽腾,表示應(yīng)用程序排隊等待和被服務(wù)的平均I/O時間沐寺,該值若大于預(yù)期的時間扒袖,這表示I/O設(shè)備處于飽和狀態(tài)或者異常。
  • avgqu-sz,表示請求被發(fā)送給I/O設(shè)備的平均時間到忽,若該值大于1,則表示I/O設(shè)備可能已經(jīng)飽和侄泽;
  • %util顿天,每秒設(shè)備的利用率;若該利用率超過60%腺兴,則表示設(shè)備出現(xiàn)性能異常左电;

7. free -m

$ free -m
             total       used       free     shared    buffers     cached
Mem:        245998      24545     221453         83         59        541
-/+ buffers/cache:      23944     222053
Swap:            0          0          0

檢查的列:

  • buffers: For the buffer cache, used for block device I/O.
  • cached: For the page cache, used by file systems.

若buffers和cached接近0,說明I/O的使用率過高页响,系統(tǒng)存在性能問題篓足。
Linux中會用free內(nèi)存作為cache,若應(yīng)用程序需要分配內(nèi)存闰蚕,系統(tǒng)能夠快速的將cache占用的內(nèi)存回收栈拖,因此free的內(nèi)存包含cache占用的部分。

8. sar -n DEV 1

sar是System Activity Reporter的縮寫没陡,系統(tǒng)活動狀態(tài)報告涩哟。

-n { keyword [,...] | ALL },用于報告網(wǎng)絡(luò)統(tǒng)計數(shù)據(jù)盼玄。keyword可以是以下的一個或者多個: DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, EICMP6 和UDP6贴彼。

-n DEV 1, 每秒統(tǒng)計一次網(wǎng)絡(luò)的使用情況;
-n EDEV 1强岸,每秒統(tǒng)計一次錯誤的網(wǎng)絡(luò)信息锻弓;

$ sar -n DEV 1
Linux 3.10.0-229.el7.x86_64 (localhost.localdomain)     05/31/2018  _x86_64_    (16 CPU)

03:54:57 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:54:58 PM     ens32   3286.00   7207.00    283.34  18333.90      0.00      0.00      0.00
03:54:58 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:54:58 PM vethe915e51      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:54:58 PM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

03:54:58 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:54:59 PM     ens32   3304.00   7362.00    276.89  18898.51      0.00      0.00      0.00
03:54:59 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:54:59 PM vethe915e51      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:54:59 PM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
^C
  • IFACE ,網(wǎng)絡(luò)接口名稱蝌箍;
  • rxpck/s 青灼,每秒接收到包數(shù)暴心;
  • txpck/s ,每秒傳輸?shù)膱髷?shù)杂拨;(transmit packages)
  • rxkB/s 专普,每秒接收的千字節(jié)數(shù);
  • txkB/s 弹沽,每秒發(fā)送的千字節(jié)數(shù)檀夹;
  • rxcmp/s ,每秒接收的壓縮包的數(shù)量策橘;
  • txcmp/s 炸渡,每秒發(fā)送的壓縮包的數(shù)量;
  • rxmcst/s丽已,每秒接收的組數(shù)據(jù)包數(shù)量蚌堵;

9. sar -n TCP,ETCP 1

該命令可以用于粗略的判斷網(wǎng)絡(luò)的吞吐量,如發(fā)起的網(wǎng)絡(luò)連接數(shù)量和接收的網(wǎng)絡(luò)連接數(shù)量沛婴;

  • TCP, 報告關(guān)于TCPv4網(wǎng)絡(luò)流量的統(tǒng)計信息;
  • ETCP, 報告有關(guān)TCPv4網(wǎng)絡(luò)錯誤的統(tǒng)計信息;
$ sar -n TCP,ETCP 1
Linux 3.10.0-514.26.2.el7.x86_64 (aushop)   05/31/2018  _x86_64_    (2 CPU)

04:16:27 PM  active/s passive/s    iseg/s    oseg/s
04:16:44 PM      0.00      2.00     15.00     13.00
04:16:45 PM      0.00      3.00    126.00    203.00
04:16:46 PM      0.00      0.00     99.00     99.00
04:16:47 PM      0.00      0.00     18.00      9.00
04:16:48 PM      0.00      0.00      5.00      6.00
04:16:49 PM      0.00      0.00      1.00      1.00
04:16:50 PM      0.00      1.00      4.00      4.00
04:16:51 PM      0.00      3.00    171.00    243.00
^C

檢測的列:

  • active/s: Number of locally-initiated TCP connections per second (e.g., via connect())吼畏,發(fā)起的網(wǎng)絡(luò)連接數(shù)量;
  • passive/s: Number of remotely-initiated TCP connections per second (e.g., via accept())嘁灯,接收的網(wǎng)絡(luò)連接數(shù)量泻蚊;
  • retrans/s: Number of TCP retransmits per second,重傳的數(shù)量丑婿;

10. top

top命令包含更多的指標(biāo)統(tǒng)計性雄,相當(dāng)于一個綜合命令。

$ top
top - 00:15:40 up 21:56,  1 user,  load average: 31.09, 29.87, 29.92
Tasks: 871 total,   1 running, 868 sleeping,   0 stopped,   2 zombie
%Cpu(s): 96.8 us,  0.4 sy,  0.0 ni,  2.7 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:  25190241+total, 24921688 used, 22698073+free,    60448 buffers
KiB Swap:        0 total,        0 used,        0 free.   554208 cached Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 20248 root      20   0  0.227t 0.012t  18748 S  3090  5.2  29812:58 java
  4213 root      20   0 2722544  64640  44232 S  23.5  0.0 233:35.37 mesos-slave
 66128 titancl+  20   0   24344   2332   1172 R   1.0  0.0   0:00.07 top
  5235 root      20   0 38.227g 547004  49996 S   0.7  0.2   2:02.74 java
  4299 root      20   0 20.015g 2.682g  16836 S   0.3  1.1  33:14.42 java
     1 root      20   0   33620   2920   1496 S   0.0  0.0   0:03.82 init
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kthreadd
     3 root      20   0       0      0      0 S   0.0  0.0   0:05.35 ksoftirqd/0
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
     6 root      20   0       0      0      0 S   0.0  0.0   0:06.94 kworker/u256:0
     8 root      20   0       0      0      0 S   0.0  0.0   2:38.05 rcu_sched

11. 總結(jié)

下面的圖片很好的展示了各個命令的主要作用枯冈,如使用vmstat查看系統(tǒng)的整體性能毅贮,mpstat用于查看cpu的性能办悟,pidstat用于查看進(jìn)程的狀態(tài)尘奏,iostat用于查看io的狀態(tài),free用于產(chǎn)看內(nèi)存的狀態(tài)病蛉,sar用于產(chǎn)看網(wǎng)絡(luò)的狀態(tài)等炫加。

image.png

二、其他:Linux常用性能工具一覽

Linux Performance Tools

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俗孝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子魄健,更是在濱河造成了極大的恐慌赋铝,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沽瘦,死亡現(xiàn)場離奇詭異革骨,居然都是意外死亡农尖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門良哲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盛卡,“玉大人,你說我怎么就攤上這事筑凫』祝” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵巍实,是天一觀的道長滓技。 經(jīng)常有香客問我,道長棚潦,這世上最難降的妖魔是什么殖属? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮瓦盛,結(jié)果婚禮上洗显,老公的妹妹穿的比我還像新娘。我一直安慰自己原环,他們只是感情好挠唆,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嘱吗,像睡著了一般玄组。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谒麦,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天俄讹,我揣著相機(jī)與錄音,去河邊找鬼绕德。 笑死患膛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的耻蛇。 我是一名探鬼主播踪蹬,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼臣咖!你這毒婦竟也來了跃捣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤夺蛇,失蹤者是張志新(化名)和其女友劉穎疚漆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡娶聘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年灵临,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趴荸。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡儒溉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出发钝,到底是詐尸還是另有隱情顿涣,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布酝豪,位于F島的核電站涛碑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏孵淘。R本人自食惡果不足惜蒲障,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘫证。 院中可真熱鬧揉阎,春花似錦、人聲如沸背捌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毡庆。三九已至坑赡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間么抗,已是汗流浹背毅否。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蝇刀,地道東北人螟加。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像熊泵,于是被迫代替她去往敵國和親仰迁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • linux系統(tǒng)性能監(jiān)視命令顽分,經(jīng)過百度谷歌,加上各渠道獲得施蜜,查找到相關(guān)命令匯集卒蘸,望能學(xué)有所收獲 ...
    _王子_閱讀 1,348評論 3 13
  • linux是當(dāng)前在服務(wù)器領(lǐng)域最成功操作系統(tǒng),不僅性能卓越,安全性高缸沃,更重要的是提供了一套完善的監(jiān)控機(jī)制恰起,來檢測系統(tǒng)...
    劉建會閱讀 1,496評論 0 2
  • 這篇文章主要介紹一些常用的linux服務(wù)器性能監(jiān)控命令,包括命令的常用參數(shù)趾牧、指標(biāo)的含義以及一些交互操作检盼。 幾個問題...
    dancingking閱讀 8,350評論 6 22
  • 當(dāng)那股驚人的靈力威壓自牧塵體內(nèi)席卷而出時,整座城市的所有人都是為之駭然翘单,無數(shù)人呆呆的望著那道少年身影吨枉,心中翻滾的驚...
    混沌天書閱讀 319評論 0 0
  • 上一篇文章中,介紹了shell的相互引用哄芜,這是普遍的做法貌亭。 經(jīng)常使用shell終端的,可以創(chuàng)建自己的shell庫认臊,...
    素還真人閱讀 1,253評論 0 0