linux系統(tǒng)性能怎么調(diào)優(yōu)
linux系統(tǒng)性能怎么調(diào)優(yōu)
由于系統(tǒng)軟、硬件配置不當(dāng),造成Linux系統(tǒng)性能問題,那么你知道linux系統(tǒng)性能怎么調(diào)優(yōu)嗎?小編帶來了 linux系統(tǒng)性能調(diào)優(yōu)的具體操作過程,下面大家跟著學(xué)習(xí)啦小編一起來學(xué)習(xí)一下吧。
linux系統(tǒng)性能調(diào)優(yōu)方法
性能調(diào)優(yōu)的第一步是性能分析,下面從性能分析著手進(jìn)行一些介紹,尤其對linux性能分析工具vmstat的用法和實(shí)踐進(jìn)行詳細(xì)介紹。
1.性能分析的目的
1)找出系統(tǒng)性能瓶頸(包括硬件瓶頸和軟件瓶頸);
2)提供性能優(yōu)化的方案(升級硬件?改進(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)資源的過渡使用都會(huì)造成平衡體系破壞,從而造成系統(tǒng)負(fù)載極高或者響應(yīng)遲緩。比如CPU過渡使用會(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ì)造成磁盤IO增加和CPU開銷增加)
2.影響性能的因素
1)CPU(cpu的速度與性能很大一部分決定了系統(tǒng)整體的性能,是否使用SMP)
2)內(nèi)存(物理內(nèi)存不夠時(shí)會(huì)使用交換內(nèi)存,使用swap會(huì)帶來磁盤I0和cpu的開銷)
3)硬盤(存儲(chǔ)系統(tǒng))
a.Raid技術(shù)使用(RAID0, RAID1, RAID5, RAID0+1)
b.小文件讀寫瓶頸是磁盤的尋址(tps),大文件讀寫的性能瓶頸是帶寬
c.Linux可以利用空閑內(nèi)存作文件系統(tǒng)訪問的cache,因此系統(tǒng)內(nèi)存越大存儲(chǔ)系統(tǒng)的性能也越好
4)網(wǎng)絡(luò)帶寬。
3.性能分析的步驟
1)對資源的使用狀況進(jìn)行長期的監(jiān)控和數(shù)據(jù)采集(nagios、cacti)
2)使用常見的性能分析工具(vmstat、top、free、iostat等)
3)經(jīng)驗(yàn)積累
a.應(yīng)用程序設(shè)計(jì)的缺陷和數(shù)據(jù)庫查詢的濫用最有可能導(dǎo)致性能問題
b.性能瓶頸可能是因?yàn)槌绦虿?內(nèi)存不足/磁盤瓶頸,但最終表現(xiàn)出的結(jié)果就是CPU耗盡,系統(tǒng)負(fù)載極高,響應(yīng)遲緩,甚至?xí)簳r(shí)失去響應(yīng)
c.物理內(nèi)存不夠時(shí)會(huì)使用交換內(nèi)存,使用swap會(huì)帶來磁盤I0和cpu的開銷
d.可能造成cpu瓶頸的問題:頻繁執(zhí)Perl,php,java程序生成動(dòng)態(tài)web;數(shù)據(jù)庫查詢大量的where子句、order by/group by排序……
e.可能造成內(nèi)存瓶頸問題:高并發(fā)用戶訪問、系統(tǒng)進(jìn)程多,java內(nèi)存泄露……
f.可能造成磁盤IO瓶頸問題:生成cache文件,數(shù)據(jù)庫頻繁更新,或者查詢大表……
4.vmstat詳細(xì)介紹
vmstat是一個(gè)很全面的性能分析工具,可以觀察到系統(tǒng)的進(jìn)程狀態(tài)、內(nèi)存使用、虛擬內(nèi)存使用、磁盤的IO、中斷、上下文切換、CPU使用等。對于 Linux 的性能分析,100%理解 vmstat 輸出內(nèi)容的含義,并能靈活應(yīng)用,那對系統(tǒng)性能分析的能力就算是基本掌握了。
下面是vmstat命令的輸出結(jié)果:
[root@monitor-www ~]# vmstat 1 5
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 84780 909744 267428 1912076 0 0 20 94 0 0 2 1 95 1 0
1 2 84780 894968 267428 1912216 0 0 0 1396 2301 11337 8 3 89 0 0
1 0 84780 900680 267428 1912340 0 0 76 1428 1854 8082 7 2 90 0 0
1 0 84780 902544 267432 1912548 0 0 116 928 1655 7502 7 2 92 0 0
2 0 84780 900076 267432 1912948 0 0 180 904 1963 8703 10 3 87 0 0
對輸出解釋如下:
1)procs
a.r列表示運(yùn)行和等待CPU時(shí)間片的進(jìn)程數(shù),這個(gè)值如果長期大于系統(tǒng)CPU個(gè)數(shù),就說明CPU資源不足,可以考慮增加CPU;
b.b列表示在等待資源的進(jìn)程數(shù),比如正在等待I/O或者內(nèi)存交換等。
2)memory
a.swpd列表示切換到內(nèi)存交換區(qū)的內(nèi)存數(shù)量(以KB為單位)。如果swpd的值不為0或者比較大,而且si、so的值長期為0,那么這種情況一般不用擔(dān)心,不會(huì)影響系統(tǒng)性能;
b.free列表示當(dāng)前空閑的物理內(nèi)存數(shù)量(以KB為單位);
c.buff列表示buffers cache的內(nèi)存數(shù)量,一般對塊設(shè)備的讀寫才需要緩沖;
d.cache列表示page cached的內(nèi)存數(shù)量,一般作文件系統(tǒng)的cached,頻繁訪問的文件都會(huì)被cached。如果cached值較大,就說明cached文件數(shù)較多。如果此時(shí)IO中的bi比較小,就說明文件系統(tǒng)效率比較好。
3)swap
a.si列表示由磁盤調(diào)入內(nèi)存,也就是內(nèi)存進(jìn)入內(nèi)存交換區(qū)的數(shù)量;
b.so列表示由內(nèi)存調(diào)入磁盤,也就是內(nèi)存交換區(qū)進(jìn)入內(nèi)存的數(shù)量
c.一般情況下,si、so的值都為0,如果si、so的值長期不為0,則表示系統(tǒng)內(nèi)存不足,需要考慮是否增加系統(tǒng)內(nèi)存。
4)IO
a.bi列表示從塊設(shè)備讀入的數(shù)據(jù)總量(即讀磁盤,單位KB/秒)
b.bo列表示寫入到塊設(shè)備的數(shù)據(jù)總量(即寫磁盤,單位KB/秒)
這里設(shè)置的bi+bo參考值為1000,如果超過1000,而且wa值比較大,則表示系統(tǒng)磁盤IO性能瓶頸。
5)system
a.in列表示在某一時(shí)間間隔中觀察到的每秒設(shè)備中斷數(shù);
b.cs列表示每秒產(chǎn)生的上下文切換次數(shù)。
上面這兩個(gè)值越大,會(huì)看到內(nèi)核消耗的CPU時(shí)間就越多。
6)CPU
a.us列顯示了用戶進(jìn)程消耗CPU的時(shí)間百分比。us的值比較高時(shí),說明用戶進(jìn)程消耗的CPU時(shí)間多,如果長期大于50%,需要考慮優(yōu)化程序啥的。
b.sy列顯示了內(nèi)核進(jìn)程消耗CPU的時(shí)間百分比。sy的值比較高時(shí),就說明內(nèi)核消耗的CPU時(shí)間多;如果us+sy超過80%,就說明CPU的資源存在不足。
c.id列顯示了CPU處在空閑狀態(tài)的時(shí)間百分比;
d.wa列表示IO等待所占的CPU時(shí)間百分比。wa值越高,說明IO等待越嚴(yán)重。如果wa值超過20%,說明IO等待嚴(yán)重。
e.st列一般不關(guān)注,虛擬機(jī)占用的時(shí)間百分比。
看過“ linux系統(tǒng)性能怎么調(diào)優(yōu)”的人還看了: