linux排优命令
-
1、CPU
-
1.1、vmstate
-
1.2 、top
-
1.3、sar
-
-
2、內(nèi)存
-
2.1、free
-
-
3、IO
-
3.1、iostat
-
-
4、網(wǎng)絡(luò)
-
4.1 netstate?
-
1、CPU
1.1、vmstate
?用來獲得有關(guān)進(jìn)程、虛存、頁面交換空間及?CPU活動的信息。這些信息反映了系統(tǒng)的負(fù)載情況
?
| 運(yùn)行和等待CPU時(shí)間片的進(jìn)程數(shù) ps:如果長期大于系統(tǒng)CPU個(gè)數(shù),就說明CPU資源不足,可以考慮增加CPU | 在等待資源的進(jìn)程數(shù) ps:正在等待I/O或者內(nèi)存交換等 | 表示切換到內(nèi)存交換區(qū)的內(nèi)存數(shù)量(以KB為單位) | 當(dāng)前空閑的物理內(nèi)存數(shù)量(以KB為單位) | buffers cache的內(nèi)存數(shù)量,一般對塊設(shè)備的讀寫才需要緩沖 | page cached的內(nèi)存數(shù)量,一般作文件系統(tǒng)的cached,頻繁訪問的文件都會被cached。如果cached值較大,就說明cached文件數(shù)較多。如果此時(shí)IO中的bi比較小,就說明文件系統(tǒng)效率比較好 | 由磁盤調(diào)入內(nèi)存,也就是內(nèi)存進(jìn)入內(nèi)存交換區(qū)的數(shù)量 | 由內(nèi)存調(diào)入磁盤,也就是內(nèi)存交換區(qū)進(jìn)入內(nèi)存的數(shù)量 |
| 從塊設(shè)備讀入的數(shù)據(jù)總量(即讀磁盤,單位KB/秒) | 寫入到塊設(shè)備的數(shù)據(jù)總量(即寫磁盤,單位KB/秒) | 在某一時(shí)間間隔中觀察到的每秒設(shè)備中斷數(shù); | 每秒產(chǎn)生的上下文切換次數(shù) | 用戶進(jìn)程消耗CPU的時(shí)間百分比。us的值比較高時(shí),說明用戶進(jìn)程消耗的CPU時(shí)間多,如果長期大于50%,需要考慮優(yōu)化程序啥的 | 內(nèi)核進(jìn)程消耗CPU的時(shí)間百分比。sy的值比較高時(shí),就說明內(nèi)核消耗的CPU時(shí)間多;如果us+sy超過80%,就說明CPU的資源存在不足。 sy 值高時(shí),表示系統(tǒng)花費(fèi)了更多的時(shí)間在進(jìn)行線程切換, JAVA 應(yīng)用造成這種現(xiàn)象的主要原因是啟動的線程比較多,且這些線程多數(shù)都處于不斷的阻塞和執(zhí)行狀態(tài)的變化過程中,導(dǎo)致系統(tǒng)不斷的切換線程,產(chǎn)生大量的上下文切換 | CPU處在空閑狀態(tài)的時(shí)間百分比; | IO等待所占的CPU時(shí)間百分比。wa值越高,說明IO等待越嚴(yán)重。如果wa值超過20%,說明IO等待嚴(yán)重 | 虛擬機(jī)占用的時(shí)間百分比 |
?
1.2 、top
?
?
第三行:
| 表示用戶進(jìn)程處理所占的百分比。 用戶進(jìn)程的CPU消耗比率應(yīng)該在 65%-70%? | 表示系統(tǒng)內(nèi)核線程處理所占的百分比 內(nèi)核的CPU消耗比率應(yīng)該為30%-35% | 表示被"nice"命令改變優(yōu)先級的任務(wù)所占百分比 | 表示空閑時(shí)間所占的百分比 | 表示在執(zhí)行過程中等待IO所占的百分比 | 表示硬件中斷所占的百分比 | 表示軟件中斷所占百分比 | st 的全稱是 Steal Time ,就是 Xen Hypervisor 分配給運(yùn)行在其它虛擬機(jī)上的任務(wù)的實(shí)際 CPU 時(shí)間 |
第四行Mem:
| 物理內(nèi)存總量 | 使用中的內(nèi)存總量 | 空閑內(nèi)存總量 | ?緩存的內(nèi)存量 |
第五行Swap:
| 交換區(qū)總量 | 使用的交換區(qū)總量 | 空閑交換區(qū)總量 | 緩沖的交換區(qū)總量 |
cache 和 buffer的區(qū)別:
Cache:高速緩存,是位于CPU與主內(nèi)存間的一種容量較小但速度很高的存儲器。由于CPU的速度遠(yuǎn)高于主內(nèi)存,CPU直接從內(nèi)存中存取數(shù)據(jù)要等待一定時(shí)間周期,Cache中保存著CPU剛用過或循環(huán)使用的一部分?jǐn)?shù)據(jù),當(dāng)CPU再次使用該部分?jǐn)?shù)據(jù)時(shí)可從Cache中直接調(diào)用,這樣就減少了CPU的等待時(shí)間,提高了系統(tǒng)的效率。Cache又分為一級Cache(L1 Cache)和二級Cache(L2 Cache),L1 Cache集成在CPU內(nèi)部,L2 Cache早期一般是焊在主板上,現(xiàn)在也都集成在CPU內(nèi)部,常見的容量有256KB或512KB L2 Cache。
Buffer:緩沖區(qū),一個(gè)用于存儲速度不同步的設(shè)備或優(yōu)先級不同的設(shè)備之間傳輸數(shù)據(jù)的區(qū)域。通過緩沖區(qū),可以使進(jìn)程之間的相互等待變少,從而使從速度慢的設(shè)備讀入數(shù)據(jù)時(shí),速度快的設(shè)備的操作進(jìn)程不發(fā)生間斷。
1.3、sar
輸出cpu采樣,每一秒輸出一次,連續(xù)輸出30次:
| all 表示統(tǒng)計(jì)信息為所有 CPU 的平均值 | 顯示在用戶級別(application)運(yùn)行使用 CPU 總時(shí)間的百分比 | 顯示在用戶級別,用于nice操作,所占用 CPU 總時(shí)間的百分比 | 在核心級別(kernel)運(yùn)行所使用 CPU 總時(shí)間的百分比 | 顯示用于等待I/O操作占用 CPU 總時(shí)間的百分比 | 管理程序(hypervisor)為另一個(gè)虛擬進(jìn)程提供服務(wù)而等待虛擬 CPU 的百分比 | 顯示 CPU 空閑時(shí)間占用 CPU 總時(shí)間的百分比 |
%iowait與cpu的認(rèn)知
?
2、內(nèi)存
2.1、free
?
第一行:
| 表示系統(tǒng)可使用的物理內(nèi)存的總量 | 已經(jīng)被分配的內(nèi)存(buffers+cached+buffer/cache-used) | 未分配的物理內(nèi)存 | 已經(jīng)被系統(tǒng)分配而未使用的buffer | 已經(jīng)被分配而未使用的cache內(nèi)存 |
?
第二行:
| 已經(jīng)被應(yīng)用程序真正使用掉的buffer和cache內(nèi)存 | 可以被應(yīng)用程序使用的內(nèi)存(第一行的-》free+buffers+cached) |
?
3、IO
3.1、iostat
-C?顯示CPU使用情況
-d?顯示磁盤使用情況
-k?以?KB?為單位顯示
-m?以?M?為單位顯示
-N?顯示磁盤陣列(LVM)?信息
-n?顯示NFS?使用情況
-p[磁盤]?顯示磁盤和分區(qū)的情況
-t?顯示終端和CPU的信息
-x?顯示詳細(xì)信息
-V?顯示版本信息
指標(biāo)詳解:
rrqm/s:每秒進(jìn)行?merge?的讀操作數(shù)目.即?delta(rmerge)/s
wrqm/s:每秒進(jìn)行?merge?的寫操作數(shù)目.即?delta(wmerge)/s
r/s:?每秒完成的讀?I/O?設(shè)備次數(shù).即?delta(rio)/s
w/s:每秒完成的寫?I/O?設(shè)備次數(shù).即?delta(wio)/s
rsec/s:每秒讀扇區(qū)數(shù).即?delta(rsect)/s
wsec/s:每秒寫扇區(qū)數(shù).即?delta(wsect)/s
rkB/s:每秒讀K字節(jié)數(shù).是?rsect/s?的一半,因?yàn)槊可葏^(qū)大小為512字節(jié).(需要計(jì)算)
wkB/s:?每秒寫K字節(jié)數(shù).是?wsect/s?的一半.(需要計(jì)算)
avgrq-sz:
平均每次設(shè)備I/O操作的數(shù)據(jù)大小?(扇區(qū)).delta(rsect+wsect)/delta(rio+wio)
ps:
類似于平均每人所買的東西多少
avgqu-sz:
平均I/O隊(duì)列長度.即?delta(aveq)/s/1000?(因?yàn)閍veq的單位為毫秒).
ps:類似于單位時(shí)間里平均排隊(duì)人的個(gè)數(shù)
await:
平均每次設(shè)備I/O操作的等待時(shí)間?(毫秒). 排隊(duì)的時(shí)間+處理的時(shí)間。即?delta(ruse+wuse)/delta(rio+wio)
ps:類似于平均每人的等待時(shí)間
svctm:
平均每次設(shè)備I/O操作的服務(wù)時(shí)間?(毫秒).即?delta(use)/delta(rio+wio)
ps:類似于收銀員的收款速度
%util:
一秒中有百分之多少的時(shí)間用于?I/O?操作,或者說一秒中有多少時(shí)間?I/O?隊(duì)列是非空的,即?delta(use)/s/1000?(因?yàn)閡se的單位為毫秒)
ps:類似于收款臺前有人排隊(duì)的時(shí)間比例
如果?%util?接近?100%,說明產(chǎn)生的I/O請求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷,該磁盤可能存在瓶頸。
idle小于70%?IO壓力就較大了,一般讀取速度有較多的wait。
同時(shí)可以結(jié)合vmstat?查看查看b參數(shù)(等待資源的進(jìn)程數(shù))和wa參數(shù)(IO等待所占用的CPU時(shí)間的百分比,高過30%時(shí)IO壓力高)。
另外?await?的參數(shù)也要多和?svctm?來參考。差的過高就一定有?IO?的問題。
avgqu-sz?也是個(gè)做?IO?調(diào)優(yōu)時(shí)需要注意的地方,這個(gè)就是直接每次操作的數(shù)據(jù)的大小,如果次數(shù)多,但數(shù)據(jù)拿的小的話,其實(shí)?IO?也會很小。如果數(shù)據(jù)拿的大,才IO?的數(shù)據(jù)會高。也可以通過?avgqu-sz?×?(?r/s?or?w/s?)?=?rsec/s?or?wsec/s。也就是講,讀定速度是這個(gè)來決定的。
svctm?一般要小于?await?(因?yàn)橥瑫r(shí)等待的請求的等待時(shí)間被重復(fù)計(jì)算了),svctm?的大小一般和磁盤性能有關(guān),CPU/內(nèi)存的負(fù)荷也會對其有影響,請求過多也會間接導(dǎo)致?svctm?的增加。await?的大小一般取決于服務(wù)時(shí)間(svctm)?以及?I/O?隊(duì)列的長度和?I/O?請求的發(fā)出模式。如果?svctm?比較接近?await,說明?I/O?幾乎沒有等待時(shí)間;如果?await?遠(yuǎn)大于?svctm,說明?I/O?隊(duì)列太長,應(yīng)用得到的響應(yīng)時(shí)間變慢,如果響應(yīng)時(shí)間超過了用戶可以容許的范圍,這時(shí)可以考慮更換更快的磁盤,調(diào)整內(nèi)核?elevator?算法,優(yōu)化應(yīng)用,或者升級?CPU。
隊(duì)列長度(avgqu-sz)也可作為衡量系統(tǒng)?I/O?負(fù)荷的指標(biāo),但由于?avgqu-sz?是按照單位時(shí)間的平均值,所以不能反映瞬間的?I/O?洪水
?
4、網(wǎng)絡(luò)
4.1 netstate?
參數(shù)匯總
?
| -a? show both listening and none-listening sockets.默認(rèn)是不顯示listening sockets -t? 僅顯示tcp相關(guān)? 默認(rèn)是都顯示 -u? 僅顯示udp相關(guān)? 默認(rèn)是都顯示 -n? 拒絕顯示別名,顯示數(shù)字 -l? 僅列出有在Listen(監(jiān)聽)的服務(wù)狀態(tài) -p? 顯示建立相關(guān)連接的程序名?? 需要sudo才能看到其他用戶起動的程序pid -r? 顯示路由表 -c? 每隔一段時(shí)間(秒),執(zhí)行該netstat命令 -i? 顯示各個(gè)網(wǎng)絡(luò)接口的狀況 -s? 按照協(xié)議進(jìn)行統(tǒng)計(jì) |
?
?
?
| CLOSED | 沒有使用這個(gè)套接字[netstat 無法顯示closed狀態(tài)] |
| LISTEN | 套接字正在監(jiān)聽連接[調(diào)用listen后] |
| SYN_SENT | 套接字正在試圖主動建立連接[發(fā)送SYN后還沒有收到ACK] |
| SYN_RECEIVED | 正在處于連接的初始同步狀態(tài)[收到對方的SYN,但還沒收到自己發(fā)過去的SYN的ACK] |
| ESTABLISHED | 連接已建立 |
| CLOSE_WAIT | 遠(yuǎn)程套接字已經(jīng)關(guān)閉:正在等待關(guān)閉這個(gè)套接字[被動關(guān)閉的一方收到FIN] |
| FIN_WAIT_1 | 套接字已關(guān)閉,正在關(guān)閉連接[發(fā)送FIN,沒有收到ACK也沒有收到FIN] |
| CLOSING | 套接字已關(guān)閉,遠(yuǎn)程套接字正在關(guān)閉,暫時(shí)掛起關(guān)閉確認(rèn)[在FIN_WAIT_1狀態(tài)下收到被動方的FIN] |
| LAST_ACK | 遠(yuǎn)程套接字已關(guān)閉,正在等待本地套接字的關(guān)閉確認(rèn)[被動方在CLOSE_WAIT狀態(tài)下發(fā)送FIN] |
| FIN_WAIT_2 | 套接字已關(guān)閉,正在等待遠(yuǎn)程套接字關(guān)閉[在FIN_WAIT_1狀態(tài)下收到發(fā)過去FIN對應(yīng)的ACK] |
| TIME_WAIT | 這個(gè)套接字已經(jīng)關(guān)閉,正在等待遠(yuǎn)程套接字的關(guān)閉傳送[FIN、ACK、FIN、ACK都完畢,這是主動方的最后一個(gè)狀態(tài),在過了2MSL時(shí)間后變?yōu)镃LOSED狀態(tài)] |
排查或者調(diào)優(yōu)需要用的三大工具:iftop、iotop、htop
iftop,iotop,htop三者主要做以下用處:
iftop
用來顯示本機(jī)網(wǎng)絡(luò)流量情況及各相互通信的流量集合。iftop通常適用于代理服務(wù)器和iptables服務(wù)器使用。
iotop
是一個(gè)用來監(jiān)視磁盤I/O 使用狀況的 top 類工具,iotop是使用Python語言編寫而成,目前iotop可從其官方直接下載。
iotop命令的鍵盤快捷鍵:
1、左右箭頭改變排序方式,默認(rèn)是按IO排序
2、r鍵是反向排序
3、o鍵是只顯示有IO輸出的進(jìn)程
4、同樣q是退出
選項(xiàng):
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ?????--version?顯示版本號然后退出 ???????-h,?--help?顯示幫助然后退出 ???????-o,?--only?只顯示正在產(chǎn)生I/O的進(jìn)程或線程。除了傳參,可以在運(yùn)行過程中按o生效。 ???????-b,?--batch?非交互模式,一般用來記錄日志 ???????-n?NUM,?--iter=NUM?設(shè)置監(jiān)測的次數(shù),默認(rèn)無限。在非交互模式下很有用 ???????-d?SEC,?--delay=SEC?設(shè)置每次監(jiān)測的間隔,默認(rèn)1秒,接受非整形數(shù)據(jù)例如1.1 ???????-p?PID,?--pid=PID?指定監(jiān)測的進(jìn)程/線程 ???????-u?USER,?--user=USER?指定監(jiān)測某個(gè)用戶產(chǎn)生的I/O ???????-P,?--processes?僅顯示進(jìn)程,默認(rèn)iotop顯示所有線程 ???????-a,?--accumulated?顯示累積的I/O,而不是帶寬 ???????-k,?--kilobytes?使用kB單位,而不是對人友好的單位。在非交互模式下,腳本編程有用。 ???????-t,?--time?加上時(shí)間戳,非交互非模式。 ???????-q,?--quiet?禁止頭幾行,非交互模式。有三種指定方式。 ??????????????-q?????只在第一次監(jiān)測時(shí)顯示列名 ??????????????-qq????永遠(yuǎn)不顯示列名。 ??????????????-qqq???永遠(yuǎn)不顯示I/O匯總。 |
| 1 | 利用iotop排查過一個(gè)Ubuntu機(jī)器上由于mlocate這個(gè)cron任務(wù)引發(fā)的io利用率持續(xù)偏高的問題。?Ubuntu?可以禁用updatedb.mlocate嗎? |
利用iotop排查過一個(gè)Ubuntu機(jī)器上由于mlocate這個(gè)cron任務(wù)引發(fā)的io利用率持續(xù)偏高的問題。
Ubuntu 可以禁用updatedb.mlocate嗎?
htop
通俗來講它就是一款查看器,即可以讓用戶與之交互的進(jìn)程查看器;它主要用于主要用于控制臺或 X 終端中。同時(shí)htop主要具有以下特性:可以定制、支持顏色主題以及按樹狀方式來查看進(jìn)程;
除了以上三個(gè)之外,還有一個(gè)也是最常用的而且容易與以上三者進(jìn)行混淆的即:atop。atop 是一個(gè)全屏的性能檢測工具,主要是基于 ASCII ,其可以用來監(jiān)控進(jìn)程的活動時(shí)間,高亮顯示出一些過載的進(jìn)程,還包括其他的一些系統(tǒng)指標(biāo)例如:CPU、內(nèi)存、交換分區(qū)等。
參考文章:
?iowait 過高問題的查找及解決linux
? ? ? 本文轉(zhuǎn)自Tenderrain 51CTO博客,原文鏈接:http://blog.51cto.com/tenderrain/1955086,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
- 上一篇: Android应用程序窗口(Activi
- 下一篇: 九、WebService中文件传输