0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux常用檢測(cè)性能的10個(gè)基本命令匯總

馬哥Linux運(yùn)維 ? 來(lái)源:未知 ? 作者:李倩 ? 2018-08-21 17:33 ? 次閱讀

本文的內(nèi)容主要來(lái)自對(duì)Netflix的一篇技術(shù)博客(Linux Performance Analysis in 60,000 Milliseconds,并添加了一些自己的理解,僅供參考。

1. uptime

$uptime23:51:26up21:31,1user,loadaverage:30.02,26.43,19.0212

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

2. dmesg | tail

$dmesg|tail[1880957.563150]perlinvokedoom-killer:gfp_mask=0x280da,order=0,oom_score_adj=0[...][1880957.563400]Outofmemory:Killprocess18694(perl)score246orsacrificechild[1880957.563408]Killedprocess18694(perl)total-vm:1972392kB,anon-rss:1953348kB,file-rss:0kB[2320864.954447]TCP:PossibleSYNfloodingonport7001.Droppingrequest.CheckSNMPcounters.123456

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

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

3. vmstat 1

$vmstat1procs---------memory-------------swap-------io-----system--------cpu-----rbswpdfreebuffcachesisobiboincsussyidwast3400200889792737085918280005610961300320020088992073708591860000592132844282981100320020089011273708591860000095012154991000320020088956873712591856000481190024599900003200200890208737125918600000158984840981100^C123456789

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

vmstat的格式如下

>vmstat[options][delay[count]]

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

$vmstat103procs-----------memory-------------swap-------io-----system--------cpu-----rbswpdfreebuffcachesisobiboincsussyidwast1002527112108688813720228001142111990000025271561086888137198560001043003490100990000025264121086888137199040001033454870019900123456

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

需要檢查的列

r:表示正在運(yùn)行或者等待CPU調(diào)度的進(jìn)程數(shù)。因?yàn)樵摿袛?shù)據(jù)不包含I/O的統(tǒng)計(jì)信息,因此可以用來(lái)檢測(cè)CPU是否飽和。若r列中的數(shù)字大于CPU的核數(shù),表示CPU已經(jīng)處于飽和狀態(tài)。

free:當(dāng)前剩余的內(nèi)存;

si, so:交換分區(qū)換入和換出的個(gè)數(shù),若換入換出個(gè)數(shù)大于0,表示內(nèi)存不足;

us, sy, id, wa:CPU的統(tǒng)計(jì)信息,分別表示user time、system time(kernel)、idle、wait I/O。I/O處理所用的時(shí)間包含在system time中,因此若system time超過(guò)20%,則I/O可能存在瓶頸或異常;

4. mpstat -P ALL 1

$mpstat-PALLLinux3.10.0-229.el7.x86_64(localhost.localdomain)05/30/2018_x86_64_(16CPU)04:03:55PMCPU%usr%nice%sys%iowait%irq%soft%steal%guest%gnice%idle04:03:55PMall3.670.000.610.710.000.000.000.000.0095.0204:03:55PM03.520.000.570.760.000.000.000.000.0095.1504:03:55PM13.830.000.610.710.000.000.000.000.0094.8504:03:55PM23.800.000.610.600.000.000.000.000.0094.9904:03:55PM33.680.000.580.600.000.000.000.000.0095.1304:03:55PM43.540.000.570.600.000.000.000.000.0095.30[...]1234567891011

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

5. pidstat 1

$pidstat1Linux3.13.0-49-generic(titanclusters-xxxxx)07/14/2015_x86_64_(32CPU)07:41:02PMUIDPID%usr%system%guest%CPUCPUCommand07:41:03PM090.000.940.000.941rcuos/007:41:03PM042145.665.660.0011.3215mesos-slave07:41:03PM043540.940.940.001.898java07:41:03PM065211596.231.890.001598.1127java07:41:03PM065641571.707.550.001579.2528java07:41:03PM60004601540.944.720.005.669pidstat07:41:03PMUIDPID%usr%system%guest%CPUCPUCommand07:41:04PM042146.002.000.008.0015mesos-slave07:41:04PM065211590.001.000.001591.0027java07:41:04PM065641573.0010.000.001583.0028java07:41:04PM10867181.000.000.001.000snmp-pass07:41:04PM60004601541.004.000.005.009pidstat^C123456789101112131415161718

該命令用于打印各個(gè)進(jìn)程對(duì)CPU的占用情況,類似top命令中顯示的內(nèi)容。pidstat的優(yōu)勢(shì)在于,可以滾動(dòng)的打印進(jìn)程運(yùn)行情況,而不像top那樣會(huì)清屏。

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

6. iostat -xz 1

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

$iostat-xz1Linux3.13.0-49-generic(titanclusters-xxxxx)07/14/2015_x86_64_(32CPU)avg-cpu:%user%nice%system%iowait%steal%idle73.960.003.730.030.0622.21Device:rrqm/swrqm/sr/sw/srkB/swkB/savgrq-szavgqu-szawaitr_awaitw_awaitsvctm%utilxvda0.000.230.210.184.522.0834.370.009.9813.805.422.440.09xvdb0.010.001.028.94127.97598.53145.790.000.431.780.280.250.25xvdc0.010.001.028.86127.79595.94146.500.000.451.820.300.270.26dm-00.000.000.692.3210.4731.6928.010.013.230.713.980.130.04dm-10.000.000.000.940.013.788.000.33345.840.04346.810.010.00dm-20.000.000.090.071.350.3622.500.002.550.235.621.780.03[...]^C123456789101112131415

檢查列

r/s, w/s, rkB/s, wkB/s,表示每秒向I/O設(shè)備發(fā)出的reads、writes、read Kbytes、write Kbytes的數(shù)量。

await,表示應(yīng)用程序排隊(duì)等待和被服務(wù)的平均I/O時(shí)間,該值若大于預(yù)期的時(shí)間,這表示I/O設(shè)備處于飽和狀態(tài)或者異常。

avgqu-sz,表示請(qǐng)求被發(fā)送給I/O設(shè)備的平均時(shí)間,若該值大于1,則表示I/O設(shè)備可能已經(jīng)飽和;

%util,每秒設(shè)備的利用率;若該利用率超過(guò)60%,則表示設(shè)備出現(xiàn)性能異常;

7. free -m

$free-mtotalusedfreesharedbufferscachedMem:245998245452214538359541-/+buffers/cache:23944222053Swap:00012345

檢查的列:

buffers: For the buffer cache, used for block device I/O.

cached: For the page cache, used by file systems.

若buffers和cached接近0,說(shuō)明I/O的使用率過(guò)高,系統(tǒng)存在性能問(wèn)題。Linux中會(huì)用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的縮寫(xiě),系統(tǒng)活動(dòng)狀態(tài)報(bào)告。

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

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

$sar-nDEV1Linux3.10.0-229.el7.x86_64(localhost.localdomain)05/31/2018_x86_64_(16CPU)03:54:57PMIFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/s03:54:58PMens323286.007207.00283.3418333.900.000.000.0003:54:58PMlo0.000.000.000.000.000.000.0003:54:58PMvethe915e510.000.000.000.000.000.000.0003:54:58PMdocker00.000.000.000.000.000.000.0003:54:58PMIFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/s03:54:59PMens323304.007362.00276.8918898.510.000.000.0003:54:59PMlo0.000.000.000.000.000.000.0003:54:59PMvethe915e510.000.000.000.000.000.000.0003:54:59PMdocker00.000.000.000.000.000.000.00^C123456789101112131415

IFACE ,網(wǎng)絡(luò)接口名稱;

rxpck/s ,每秒接收到包數(shù);

txpck/s ,每秒傳輸?shù)膱?bào)數(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, 報(bào)告關(guān)于TCPv4網(wǎng)絡(luò)流量的統(tǒng)計(jì)信息;

ETCP, 報(bào)告有關(guān)TCPv4網(wǎng)絡(luò)錯(cuò)誤的統(tǒng)計(jì)信息;

$sar-nTCP,ETCP1Linux3.10.0-514.26.2.el7.x86_64(aushop)05/31/2018_x86_64_(2CPU)04:16:27PMactive/spassive/siseg/soseg/s04:16:44PM0.002.0015.0013.0004:16:45PM0.003.00126.00203.0004:16:46PM0.000.0099.0099.0004:16:47PM0.000.0018.009.0004:16:48PM0.000.005.006.0004:16:49PM0.000.001.001.0004:16:50PM0.001.004.004.0004:16:51PM0.003.00171.00243.00^C12345678910111213

檢測(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)計(jì),相當(dāng)于一個(gè)綜合命令。

$toptop-00:15:40up21:56,1user,loadaverage:31.09,29.87,29.92Tasks:871total,1running,868sleeping,0stopped,2zombie%Cpu(s):96.8us,0.4sy,0.0ni,2.7id,0.1wa,0.0hi,0.0si,0.0stKiBMem:25190241+total,24921688used,22698073+free,60448buffersKiBSwap:0total,0used,0free.554208cachedMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND20248root2000.227t0.012t18748S30905.229812:58java4213root20027225446464044232S23.50.0233:35.37mesos-slave66128titancl+2002434423321172R1.00.00:00.07top5235root20038.227g54700449996S0.70.22:02.74java4299root20020.015g2.682g16836S0.31.133:14.42java1root2003362029201496S0.00.00:03.82init2root200000S0.00.00:00.02kthreadd3root200000S0.00.00:05.35ksoftirqd/05root0-20000S0.00.00:00.00kworker/0:0H6root200000S0.00.00:06.94kworker/u256:08root200000S0.00.02:38.05rcu_sched12345678910111213141516171819

11. 總結(jié)

下面的圖片很好的展示了各個(gè)命令的主要作用,如使用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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10698

    瀏覽量

    209331
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207895

原文標(biāo)題:Linux性能檢測(cè)常用的10個(gè)基本命令

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux常用命令匯總

    本篇文章一個(gè)介紹了約40個(gè)Linux常用命令,這些命令也正是Linux入門(mén)的精髓之處,所以,對(duì)于
    發(fā)表于 10-25 15:08 ?621次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>常用命令</b><b class='flag-5'>匯總</b>

    后端開(kāi)發(fā)必備Linux命令匯總

    后端開(kāi)發(fā)必備Linux命令匯總
    發(fā)表于 11-21 14:05 ?339次閱讀

    Linux本命令總結(jié)

    都說(shuō)Linux命令多,實(shí)際工作中我們又有多少命令會(huì)接觸用到呢?本文跟大家分享Linux運(yùn)維工作中常用的600
    的頭像 發(fā)表于 01-11 10:32 ?871次閱讀

    linux的基本命令

    linux本命令(三)
    發(fā)表于 05-21 13:33

    Linux系統(tǒng)的一些常用的基本命令分享

    Linux系統(tǒng)的一些常用的基本命令
    發(fā)表于 01-04 06:36

    如何去使用嵌入式Linux開(kāi)發(fā)工具和linux常用本命令

    RTSP流媒體傳輸協(xié)議包括哪些?如何去使用嵌入式Linux開(kāi)發(fā)工具和linux常用本命令呢?
    發(fā)表于 11-12 06:52

    淺析Linux概念和基本命令

    Linux是什么?Linux的基本命令有哪些?
    發(fā)表于 12-24 07:50

    linux常用本命令使用技巧

    嚴(yán)格來(lái)講,Linux這個(gè)詞本身只表示Linux內(nèi)核,但實(shí)際上人們已經(jīng)習(xí)慣了用Linux來(lái)形容整個(gè)基于Linux內(nèi)核,并且使用GNU 工程各種工具和數(shù)據(jù)庫(kù)的操作系統(tǒng)。
    發(fā)表于 12-03 11:44 ?1289次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>常用</b>基<b class='flag-5'>本命令</b>使用技巧

    linux入門(mén)與基本命令相關(guān)資料下載

    linux入門(mén)與基本命令
    發(fā)表于 03-28 16:52 ?11次下載

    linux入門(mén)與基本命令1相關(guān)資料下載

    linux入門(mén)與基本命令1相關(guān)資料下載
    發(fā)表于 03-28 16:55 ?18次下載

    linux系統(tǒng)入門(mén)與基本命令-1版 相關(guān)資料下載

    linux系統(tǒng)入門(mén)與基本命令-1版
    發(fā)表于 03-28 16:58 ?0次下載

    Linux常用20條命令匯總

    每個(gè)人使用Linux的目的都不同,所以常用命令差異非常大,而對(duì)于C/C++和shell程序編寫(xiě)較多人來(lái)說(shuō),也是存在很常用命令。
    的頭像 發(fā)表于 01-18 14:35 ?3628次閱讀

    linux本命令說(shuō)明參數(shù)講解教程

    linux本命令說(shuō)明參數(shù)講解教程說(shuō)明。
    發(fā)表于 03-25 16:00 ?9次下載

    Linux常用命令TOP 10超詳細(xì)匯總,入門(mén)必學(xué)。

    Linux常用命令TOP 10超詳細(xì)匯總,入門(mén)必學(xué)。 大家應(yīng)該都知道Linux操作系統(tǒng),就算不熟悉至少也聽(tīng)說(shuō)過(guò)吧,由于它是開(kāi)放性的,也是免費(fèi)
    的頭像 發(fā)表于 10-09 14:31 ?1090次閱讀

    Linux系統(tǒng)中的10個(gè)常用的文本查看命令

    當(dāng)你需要查看Linux系統(tǒng)中的文本文件時(shí),使用文本編輯器可能會(huì)比較繁瑣,特別是當(dāng)你只需要查看文件的內(nèi)容時(shí)。這時(shí),你可以使用Linux命令行下的文本查看工具來(lái)快速準(zhǔn)確地查看文件。下面介紹了10
    的頭像 發(fā)表于 06-24 11:44 ?1.1w次閱讀