版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、系統(tǒng)性能分析和優(yōu)化,童劍 2006/03/21 msn: ,前言,很高興能有這樣的機(jī)會,把我自己多年工作中對服務(wù)器硬件、軟件方面的性能分析的經(jīng)驗和體會,以及性能優(yōu)化的經(jīng)驗和各位朋友做一次分享。 這份ppt的內(nèi)容組織大致是這樣的,通過對系統(tǒng)中和性能相關(guān)的各個環(huán)節(jié)的介紹,使大家知道出現(xiàn)性能問題時可以從那些方面入手去查,而分析典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn),讓大家對應(yīng)用和系統(tǒng)資源的依賴有了更直觀的認(rèn)識,然后我會介紹常見的分析及監(jiān)控系統(tǒng)資源時使用的工具,這個環(huán)節(jié)應(yīng)該是最主要的,最后我會舉一個實際發(fā)生過的系統(tǒng)性能瓶頸分析和優(yōu)化的案例,作為一個實踐和總結(jié)。 本文涉及的內(nèi)容基于Gnu/Linux系統(tǒng)平臺,但關(guān)
2、于性能優(yōu)化分析和優(yōu)化的思路也能適用于其他系統(tǒng)平臺。,我們將會討論下列7個話題,性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn) 常見的性能分析工具介紹 性能分析及優(yōu)化的案例,開始第1個話題,性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn) 常見的性能分析工具介紹 性能分析及優(yōu)化的案例,性能分析的目的,找出系統(tǒng)性能瓶頸 硬件瓶頸 軟件瓶頸 提供性能優(yōu)化方案 升級硬件 改進(jìn)系統(tǒng)結(jié)構(gòu) 達(dá)到合理的硬件和軟件配置 使系統(tǒng)資源使用達(dá)到平衡,性能分析的目的,但遺憾的是 解決一個性能瓶頸,往往又會出
3、現(xiàn)另外的瓶頸或者其他問題,所以性能優(yōu)化更加切實的目標(biāo)是做到在一定范圍內(nèi)使系統(tǒng)的各項資源使用趨向合理和保持一定的平衡。 系統(tǒng)運(yùn)行良好的時候恰恰也是各項資源達(dá)到了一個平衡體,任何一項資源的過渡使用都會造成平衡體系破壞,從而造成系統(tǒng)負(fù)載極高或者響應(yīng)遲緩。比如CPU過渡使用會造成大量進(jìn)程等待CPU資源,系統(tǒng)響應(yīng)變慢,等待會造成進(jìn)程數(shù)增加,進(jìn)程增加又會造成內(nèi)存使用增加,內(nèi)存耗盡又會造成虛擬內(nèi)存使用,使用虛擬內(nèi)存又會造成磁盤IO增加和CPU開銷增加(用于進(jìn)程切換、缺頁處理的CPU開銷),開始第2個話題,性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn)
4、 常見的性能分析工具介紹 性能分析及優(yōu)化的案例,性能分析相關(guān)的人,系統(tǒng)管理員 大型應(yīng)用的系統(tǒng)結(jié)構(gòu)設(shè)計人員 軟件開發(fā)人員,性能分析相關(guān)的人,系統(tǒng)管理員 掌握系統(tǒng)運(yùn)行狀況(負(fù)載) 掌握系統(tǒng)資源使用情況(硬件) 掌握應(yīng)用程序?qū)Y源的使用情況(應(yīng)用程序執(zhí)行效率,反饋給應(yīng)用開發(fā)人員) 有針對性的開展服務(wù)器性能優(yōu)化(硬件、軟件、軟件配置),性能分析相關(guān)的人,系統(tǒng)架構(gòu)設(shè)計人員 了解程序執(zhí)行效率 了解系統(tǒng)架構(gòu)中的性能瓶頸,優(yōu)化系統(tǒng)結(jié)構(gòu) 設(shè)計更好的應(yīng)用系統(tǒng)架構(gòu),性能分析相關(guān)的人,軟件開發(fā)人員 了解程序執(zhí)行效率 改進(jìn)程序邏輯、改進(jìn)性能,開始第3個話題,性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用
5、和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn) 常見的性能分析工具介紹 性能分析及優(yōu)化的案例,性能相關(guān)的各個環(huán)節(jié),硬件資源 操作系統(tǒng) 服務(wù)器軟件 開發(fā)平臺/中間件軟件/框架軟件 應(yīng)用程序,性能相關(guān)的-硬件資源,CPU 內(nèi)存 存儲系統(tǒng) 帶寬,性能相關(guān)的-硬件資源,CPU 是否使用SMP 單顆CPU的性能對依賴CPU的某些應(yīng)用的影響很嚴(yán)重,比如數(shù)據(jù)庫的查詢處理,性能相關(guān)的-硬件資源,內(nèi)存 物理內(nèi)存 物理內(nèi)存不夠時會使用交換內(nèi)存 交換內(nèi)存 使用交換內(nèi)存會帶來磁盤IO和CPU的開銷增加,性能相關(guān)的-硬件資源,存儲系統(tǒng) SCSI磁盤 ATA/SATA磁盤 RAID磁盤陣列(RAID0, RAID1, RAI
6、D5, RAID0+1) 一些經(jīng)驗 小文件讀寫的性能瓶頸是磁盤的尋址(隨機(jī)讀寫性能更差),評估的標(biāo)準(zhǔn)是tps 大文件讀寫的性能瓶頸是帶寬,評估的標(biāo)準(zhǔn)是持續(xù)的讀寫速度 Linux可以利用空閑內(nèi)存作文件系統(tǒng)訪問的cache,因此系統(tǒng)內(nèi)存越大存儲系統(tǒng)的性能也越好,性能相關(guān)的-硬件資源,帶寬 網(wǎng)絡(luò)帶寬 SCSI總線帶寬 大文件訪問時SCSI的帶寬瓶頸 系統(tǒng)總線帶寬,性能相關(guān)的-操作系統(tǒng),SMP性能 VM性能 IO性能(存儲設(shè)備、網(wǎng)絡(luò)設(shè)備、異步IO) 文件系統(tǒng)性能(大文件優(yōu)化、小文件優(yōu)化、寫優(yōu)化、讀優(yōu)化、網(wǎng)絡(luò)文件系統(tǒng)) 多線程性能,開始第4個話題,性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系
7、統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn) 常見的性能分析工具介紹 性能分析及優(yōu)化的案例,系統(tǒng)使用和優(yōu)化的原則,對資源的使用狀況作長期的監(jiān)控和數(shù)據(jù)收集 Snmp+MRTG Sar 程序的優(yōu)化和系統(tǒng)結(jié)構(gòu)的優(yōu)化比硬件的性能優(yōu)化更有效 避免不受限制的使用系統(tǒng)資源 設(shè)置各項服務(wù)對資源的使用限額,如Apache, MySQL,PHP等,系統(tǒng)使用和優(yōu)化的原則,始終保留一定量的空閑資源 多少合適?根據(jù)應(yīng)用的特點(diǎn),比如是否有突發(fā)性使用增長? 日常情況下,保留至少 60% 的系統(tǒng)資源,以應(yīng)付突發(fā)使用增長。 日常情況下,資源使用率達(dá)到 80% 時,你必須有所行動了,尤其是web應(yīng)用。 系統(tǒng)硬件達(dá)到合理的配置
8、(以適合應(yīng)用的特點(diǎn)為依據(jù),資源消耗均衡為目標(biāo)) 系統(tǒng)性能的水桶理論,系統(tǒng)使用和優(yōu)化的原則,應(yīng)用軟件對資源的使用要均衡(理想目標(biāo)) 怎么樣就算是均衡了?我也在摸索中 理想狀況為:CPU消耗到50%的時候,磁盤的帶寬也到50%,磁盤的tps也到50%,內(nèi)存使用也到50%(除去可以提供給cache的內(nèi)存),開始第5個話題,性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn) 常見的性能分析工具介紹 性能分析及優(yōu)化的案例,典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn),聲明 這部分內(nèi)容主要是本人在網(wǎng)站工作多年的一些實踐經(jīng)驗積累, 所以這些經(jīng)驗并不完全適用于其他的應(yīng)用環(huán)
9、境。 在我的經(jīng)驗中,大多數(shù)的硬件性能問題主要和CPU、磁盤、內(nèi)存相關(guān), 還沒有遇到因為開發(fā)語言的運(yùn)行效率對整個應(yīng)用的性能造成影響,而應(yīng)用程序設(shè)計的缺陷和數(shù)據(jù)庫查詢的濫用反倒是最最常見的性能問題。 需要注意的是,大多數(shù)情況下,雖然性能瓶頸的起因是程序性能差或者是內(nèi)存不足或者是磁盤瓶頸等各種原因,但最終表現(xiàn)出的結(jié)果就是CPU耗盡,系統(tǒng)負(fù)載極高,響應(yīng)遲緩,甚至?xí)簳r失去響應(yīng),因此我們觀察服務(wù)器狀況時,最先看的就是系統(tǒng)負(fù)載和CPU空閑度。,典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn),動態(tài)內(nèi)容為主的Web應(yīng)用 靜態(tài)內(nèi)容為主的Web應(yīng)用 (如Squid Cache) 數(shù)據(jù)庫應(yīng)用 軟件下載 流媒體服務(wù),典型應(yīng)用對系統(tǒng)資源使
10、用的特點(diǎn),動態(tài)內(nèi)容為主的Web應(yīng)用 頻繁執(zhí)行程序,如 Perl, PHP, Java 等,消耗CPU嚴(yán)重 提供并發(fā)用戶訪問,因此系統(tǒng)進(jìn)程數(shù)多,消耗內(nèi)存多,當(dāng)內(nèi)存不足時,使用交換內(nèi)存也會增加CPU的開銷 磁盤的寫IO比較頻繁(主要為隨機(jī)寫),比如生成cache文件,更新session文件等。 內(nèi)存充足時讀取的內(nèi)容可以被cache住,cache的命中率和文件更新的頻繁程度成反比,磁盤的讀IO相對較小,典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn),靜態(tài)內(nèi)容為主的Web應(yīng)用 (如Squid Cache) 網(wǎng)絡(luò)帶寬瓶頸 小文件的隨機(jī)讀取頻繁,內(nèi)存充足時可以緩解磁盤隨機(jī)讀的壓力 系統(tǒng)內(nèi)存不足時磁盤IO量會比較大(讀、寫、
11、交換內(nèi)存),因此增加CPU的開銷,典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn),數(shù)據(jù)庫應(yīng)用 數(shù)據(jù)庫查詢語句復(fù)雜,大量的 where 子句,order by, group by 排序等,CPU容易出現(xiàn)瓶頸 表太大時,查詢遍歷全表造成磁盤讀的IO量大,容易出現(xiàn)讀IO等待的情況 數(shù)據(jù)更新量大或者更新頻繁時,造成磁盤寫的IO量大 內(nèi)存不足時頻繁使用交換內(nèi)存,典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn),軟件下載 網(wǎng)絡(luò)帶寬瓶頸 存儲系統(tǒng)帶寬瓶頸(讀) 流媒體服務(wù) 網(wǎng)絡(luò)帶寬瓶頸 存儲系統(tǒng)帶寬瓶頸(讀),開始第6個話題,性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn) 常見的性能分析
12、工具介紹 性能分析及優(yōu)化的案例,常見的性能分析工具介紹,Vmstat Top Free Uptime sysstat 工具包 Iozone Strace 希望看完以上工具的使用說明,讓你能夠知道如何判斷系統(tǒng)瓶頸在那里、內(nèi)存是否夠用、CPU是否夠用、磁盤IO是否夠用、網(wǎng)絡(luò)和磁盤帶寬是否夠用等問題。,工具介紹-vmstat,vmstat是一個很全面的性能分析工具,可以觀察到系統(tǒng)的進(jìn)程狀態(tài)、內(nèi)存使用、虛擬內(nèi)存使用、磁盤的IO、中斷、上下問切換、CPU使用等。系統(tǒng)性能分析工具中,我使用最多的是這個,除了 sysstat 工具包外,這個工具能查看的系統(tǒng)資源最多。 對于 Linux 的性能分析,100%理
13、解 vmstat 輸出內(nèi)容的含義,那你對系統(tǒng)性能分析的能力就算是基本掌握了。 我這里主要說明一下這個命令顯示出的部分?jǐn)?shù)據(jù)代表的含義,和它反映出系統(tǒng)相關(guān)資源的狀況。輸出內(nèi)容共有 6 類,分別說明如下。,工具介紹-vmstat,Vmstat的輸出格式如下(CentOS 3.3),工具介紹-vmstat,Procs r: 運(yùn)行的和等待(CPU時間片)運(yùn)行的進(jìn)程數(shù),這個值也可以判斷是否需要增加CPU(長期大于1) b: 處于不可中斷狀態(tài)的進(jìn)程數(shù),常見的情況是由IO引起的,工具介紹-vmstat,Memory swpd: 切換到交換內(nèi)存上的內(nèi)存(默認(rèn)以KB為單位) 如果 swpd 的值不為0,或者還比較
14、大,比如超過100M了,但是 si, so 的值長期為 0,這種情況我們可以不用擔(dān)心,不會影響系統(tǒng)性能。 free: 空閑的物理內(nèi)存 buff: 作為buffer cache的內(nèi)存,對塊設(shè)備的讀寫進(jìn)行緩沖 cache: 作為page cache的內(nèi)存, 文件系統(tǒng)的cache 如果 cache 的值大的時候,說明cache住的文件數(shù)多,如果頻繁訪問到的文件都能被cache住,那么磁盤的讀IO bi 會非常小。,工具介紹-vmstat,Swap si: 交換內(nèi)存使用,由磁盤調(diào)入內(nèi)存 so: 交換內(nèi)存使用,由內(nèi)存調(diào)入磁盤 內(nèi)存夠用的時候,這2個值都是0,如果這2個值長期大于0時,系統(tǒng)性能會受到影響。
15、磁盤IO和CPU資源都會被消耗。 我發(fā)現(xiàn)有些朋友看到空閑內(nèi)存(free)很少或接近于0時,就認(rèn)為內(nèi)存不夠用了,實際上不能光看這一點(diǎn)的,還要結(jié)合si,so,如果free很少,但是si,so也很少(大多時候是0),那么不用擔(dān)心,系統(tǒng)性能這時不會受到影響的。,工具介紹-vmstat,Io bi: 從塊設(shè)備讀入的數(shù)據(jù)總量(讀磁盤) (KB/s), bo: 寫入到塊設(shè)備的數(shù)據(jù)總理(寫磁盤) (KB/s) 隨機(jī)磁盤讀寫的時候,這2個 值越大(如超出1M),能看到CPU在IO等待的值也會越大,工具介紹-vmstat,System in: 每秒產(chǎn)生的中斷次數(shù) cs: 每秒產(chǎn)生的上下文切換次數(shù) 上面這2個值越大
16、,會看到由內(nèi)核消耗的CPU時間會越多,工具介紹-vmstat,Cpu us: 用戶進(jìn)程消耗的CPU時間百分比 us 的值比較高時,說明用戶進(jìn)程消耗的CPU時間多,但是如果長期超過50% 的使用,那么我們就該考慮優(yōu)化程序算法或者進(jìn)行加速了(比如 PHP/Perl) sy: 內(nèi)核進(jìn)程消耗的CPU時間百分比 sy 的值高時,說明系統(tǒng)內(nèi)核消耗的CPU資源多,這并不是良性的表現(xiàn),我們應(yīng)該檢查原因。 wa: IO等待消耗的CPU時間百分比 wa 的值高時,說明IO等待比較嚴(yán)重,這可能是由于磁盤大量作隨機(jī)訪問造成,也有可能是磁盤的帶寬出現(xiàn)瓶頸(塊操作)。 id: CPU處在空閑狀態(tài)時間百分比,工具介紹-vm
17、stat,情景分析 這個vmstat的輸出那些信息值得關(guān)注? Procs r: 運(yùn)行的進(jìn)程比較多,系統(tǒng)很繁忙 Io bo: 磁盤寫的數(shù)據(jù)量稍大,如果是大文件的寫,10M以內(nèi)基本不用擔(dān)心,如果是小文件寫2M以內(nèi)基本正常 Cpu us: 持續(xù)大于50,服務(wù)高峰期可以接受 Cpu wa: 稍微有些高 Cpu id:持續(xù)小于50,服務(wù)高峰期可以接受,工具介紹-top,這個命令可以查看系統(tǒng)中運(yùn)行的進(jìn)程的狀況,CPU使用狀況,系統(tǒng)負(fù)載,內(nèi)存使用等。它是檢查系統(tǒng)進(jìn)程運(yùn)行狀況最方便的工具了,它默認(rèn)顯示部分活動的進(jìn)程,并且按照進(jìn)程使用CPU的多少排序。它可以顯示全部CPU的使用狀況,也可以顯示每個進(jìn)程都運(yùn)行在那
18、個CPU上面。 我習(xí)慣使用這個命令查看那些進(jìn)程或者那類進(jìn)程占用CPU和內(nèi)存資源最多,以此迅速定位存在性能問題的進(jìn)程,以及運(yùn)行異常的進(jìn)程。,工具介紹-top,Top命令的輸出1 (CentOS 3.3),工具介紹-top,Top命令的輸出2 (CentOS 3.3),工具介紹-top,用 top 看到的內(nèi)存的說明(Mem的第2行) actv active 活躍的內(nèi)存頁,正在映射給進(jìn)程使用 in_d inactive_dirty 非活躍的內(nèi)存頁,并且內(nèi)存數(shù)據(jù)被修改,需要寫回磁盤 in_c inactive_clean 非活躍的內(nèi)存頁,干凈的數(shù)據(jù),可以被重新分配使用,工具介紹-top,問題? in_d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年人工智能在法律咨詢行業(yè)的應(yīng)用報告
- 兒園食堂進(jìn)貨制度
- 倉庫出入庫制度
- 么是學(xué)分制度
- 2026年舟山市普陀區(qū)人民法院公開招聘編外用工人員備考題庫及參考答案詳解
- 2025至2030中國特種陶瓷材料技術(shù)壁壘與下游應(yīng)用拓展研究報告
- 2025至2030中國新能源汽車電機(jī)電控系統(tǒng)競爭格局分析報告
- 中國電建集團(tuán)西北勘測設(shè)計研究院有限公司2026屆秋季招聘備考題庫及1套完整答案詳解
- 交通安全太重要課件
- 2025-2030中國飄香機(jī)市場發(fā)展趨勢與投資規(guī)劃建議研究-版研究報告
- 實驗室設(shè)備采購中的風(fēng)險管理及應(yīng)對策略
- 2024年某銀行內(nèi)部管理制度范文(2篇)
- 夫妻債務(wù)約定協(xié)議書
- 腕關(guān)節(jié)綜合征
- JGJ256-2011 鋼筋錨固板應(yīng)用技術(shù)規(guī)程
- 上海建橋?qū)W院簡介招生宣傳
- 《智慧教育黑板技術(shù)規(guī)范》
- 《電力建設(shè)安全工作規(guī)程》-第1部分火力發(fā)電廠
- 歌曲《我會等》歌詞
- 八年級物理上冊期末測試試卷-附帶答案
- 小學(xué)英語五年級上冊Unit 5 Part B Let's talk 教學(xué)設(shè)計
評論
0/150
提交評論