linux性能調(diào)試之vmstat分析
1.性能分析的目的
1)找出系統(tǒng)性能瓶頸(包括硬件瓶頸和軟件瓶頸);
2)提供性能優(yōu)化的方案(升級(jí)硬件?改進(jìn)系統(tǒng)系統(tǒng)結(jié)構(gòu)?);
3)達(dá)到合理的硬件和軟件配置;
4)使系統(tǒng)資源使用達(dá)到最大的平衡。(一般情況下系統(tǒng)良好運(yùn)行的時(shí)候恰恰各項(xiàng)資源達(dá)到了一個(gè)平衡體,任何一項(xiàng)資源的過(guò)渡使用都會(huì)造成平衡體系破壞,從而造成系統(tǒng)負(fù)載極高或者響應(yīng)遲緩。比如CPU過(guò)渡使用會(huì)造成大量進(jìn)程等待CPU資源,系統(tǒng)響應(yīng)變慢,等待會(huì)造成進(jìn)程數(shù)增加,進(jìn)程增加又會(huì)造成內(nèi)存使用增加,內(nèi)存耗盡又會(huì)造成虛擬內(nèi)存使用,使用虛擬內(nèi)存又會(huì)造成磁盤(pán)IO增加和CPU開(kāi)銷(xiāo)增加)
2.影響性能的因素
1)CPU(cpu的速度與性能很大一部分決定了系統(tǒng)整體的性能,是否使用SMP)
2)內(nèi)存(物理內(nèi)存不夠時(shí)會(huì)使用交換內(nèi)存,使用swap會(huì)帶來(lái)磁盤(pán)I0和cpu的開(kāi)銷(xiāo))
3)硬盤(pán)(存儲(chǔ)系統(tǒng))
a.Raid技術(shù)使用(RAID0, RAID1, RAID5, RAID0+1)
b.小文件讀寫(xiě)瓶頸是磁盤(pán)的尋址(tps),大文件讀寫(xiě)的性能瓶頸是帶寬
c.Linux可以利用空閑內(nèi)存作文件系統(tǒng)訪問(wèn)的cache,因此系統(tǒng)內(nèi)存越大存儲(chǔ)系統(tǒng)的性能也越好
4)網(wǎng)絡(luò)帶寬。
3.性能分析的步驟
1)對(duì)資源的使用狀況進(jìn)行長(zhǎng)期的監(jiān)控和數(shù)據(jù)采集(nagios、cacti)
2)使用常見(jiàn)的性能分析工具(vmstat、top、free、iostat等)
3)經(jīng)驗(yàn)積累
a.應(yīng)用程序設(shè)計(jì)的缺陷和數(shù)據(jù)庫(kù)查詢(xún)的濫用最有可能導(dǎo)致性能問(wèn)題
b.性能瓶頸可能是因?yàn)槌绦虿?內(nèi)存不足/磁盤(pán)瓶頸,但最終表現(xiàn)出的結(jié)果就是CPU耗盡,系統(tǒng)負(fù)載極高,響應(yīng)遲緩,甚至?xí)簳r(shí)失去響應(yīng)
c.物理內(nèi)存不夠時(shí)會(huì)使用交換內(nèi)存,使用swap會(huì)帶來(lái)磁盤(pán)I0和cpu的開(kāi)銷(xiāo)
d.可能造成cpu瓶頸的問(wèn)題:頻繁執(zhí)Perl,php,java程序生成動(dòng)態(tài)web;數(shù)據(jù)庫(kù)查詢(xún)大量的where子句、order by/group by排序……
e.可能造成內(nèi)存瓶頸問(wèn)題:高并發(fā)用戶(hù)訪問(wèn)、系統(tǒng)進(jìn)程多,java內(nèi)存泄露……
f.可能造成磁盤(pán)IO瓶頸問(wèn)題:生成cache文件,數(shù)據(jù)庫(kù)頻繁更新,或者查詢(xún)大表……
4.vmstat詳細(xì)介紹
vmstat:用于監(jiān)控、顯示系統(tǒng)運(yùn)行過(guò)程中的虛擬內(nèi)存/CPU/磁盤(pán)狀態(tài)。
簡(jiǎn)單示例(時(shí)間間隔2s,監(jiān)控2次):
重要字段解釋?zhuān)?br />
r 表示運(yùn)行隊(duì)列(等待運(yùn)行的進(jìn)程數(shù))
b 表示阻塞的進(jìn)程
swpd 虛擬內(nèi)存已使用的大小
free 空閑的物理內(nèi)存的大小,我的機(jī)器內(nèi)存總共8G,剩余3415M。
in 每秒CPU的中斷次數(shù),包括時(shí)間中斷
cs 每秒上下文切換次數(shù),比如系統(tǒng)調(diào)用,線程的切換。上下文切換次數(shù)過(guò)多表示你的CPU大部分浪費(fèi)在上下文切換,導(dǎo)致CPU干正經(jīng)事的時(shí)間少了,CPU沒(méi)有充分利用,是不可取的。
us 用戶(hù)CPU時(shí)間。
sy 系統(tǒng)CPU時(shí)間,如果太高,表示系統(tǒng)調(diào)用時(shí)間長(zhǎng),例如是IO操作頻繁。
id 空閑 CPU時(shí)間,一般來(lái)說(shuō),id + us + sy = 100。
wt 等待IO CPU時(shí)間。
典型的問(wèn)題現(xiàn)象:
1.CPU問(wèn)題
a.procs.r持續(xù)有值,且大于系統(tǒng)CPU數(shù)量,則認(rèn)為系統(tǒng)不足以支撐當(dāng)前的負(fù)載(因?yàn)橐恢庇羞M(jìn)程在等待運(yùn)行),可能是軟件實(shí)現(xiàn)問(wèn)題或者需要升級(jí)硬件系統(tǒng)
b.cpu.id持續(xù)為0,表示CPU持續(xù)忙,需要根據(jù)cpu.sy,cpu.us繼續(xù)查找原因
c.cpu.sy,cpu.us持續(xù)高,且cpu.sy大于cpu.us表示系統(tǒng)頻繁在內(nèi)核態(tài)執(zhí)行,可能存在頻繁的或較多的系統(tǒng)調(diào)用或者IO訪問(wèn)
2.內(nèi)存問(wèn)題
a.memory.swpd數(shù)值持續(xù)有值,說(shuō)明系統(tǒng)內(nèi)存不足且使用了虛擬內(nèi)存,需要加大內(nèi)存。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
wamp2.2e 64位 curl 開(kāi)啟不了的解決辦法
這篇文章主要介紹了wamp2.2e 64位 curl 開(kāi)啟不了的解決辦法,需要的朋友可以參考下2014-12-12Centos8最小化部署安裝OpenStack Ussuri的詳細(xì)教程
這篇文章主要介紹了Centos8最小化部署安裝OpenStack Ussuri的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08CentOS7下實(shí)現(xiàn)終端輸入中文設(shè)置詳解
這篇文章主要給大家介紹了關(guān)于CentOS7下實(shí)現(xiàn)終端輸入中文設(shè)置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用CentOS7系統(tǒng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07linux jexus服務(wù)設(shè)置開(kāi)機(jī)啟動(dòng)
這篇文章主要為大家詳細(xì)介紹了linux jexus服務(wù)設(shè)置開(kāi)機(jī)啟動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06詳解如何在Linux(CentOS)下重置MySQL根(Root)密碼
本篇文章主要介紹了詳解如何在Linux(CentOS)下重置MySQL根(Root)密碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03.htaccess教程之.httacces文件介紹與創(chuàng)建
從本指南中,你將可以學(xué)習(xí)到有關(guān).htaccess文件及其功能的知識(shí),并用以?xún)?yōu)化你的網(wǎng)站。盡管.htaccess只是一個(gè)文件,但它可以更改服務(wù)器的設(shè)置,允許你做許多不同的事情,最流行的功能是您可以創(chuàng)建自定義的“404 error”頁(yè)面。.2008-06-06