系統(tǒng)性能分析和優(yōu)化_第1頁
系統(tǒng)性能分析和優(yōu)化_第2頁
系統(tǒng)性能分析和優(yōu)化_第3頁
系統(tǒng)性能分析和優(yōu)化_第4頁
系統(tǒng)性能分析和優(yōu)化_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 前言 很高興能有這樣的機會,把我自己多年工作中對服務(wù)器硬件、軟件 方面的性能分析的經(jīng)驗和體會,以及性能優(yōu)化的經(jīng)驗和各位朋友做一次 分享。 這份ppt的內(nèi)容組織大致是這樣的,通過對系統(tǒng)中和性能相關(guān)的各 個環(huán)節(jié)的介紹,使大家知道出現(xiàn)性能問題時可以從那些方面入手去查, 而分析典型應(yīng)用對系統(tǒng)資源使用的特點,讓大家對應(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)于性能優(yōu)化分析和 優(yōu)化的思路也能適用于其他系

2、統(tǒng)平臺。 我們將會討論下列7個話題 性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點 常見的性能分析工具介紹 性能分析及優(yōu)化的案例 開始第1個話題 性能分析的目的性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點 常見的性能分析工具介紹 性能分析及優(yōu)化的案例 性能分析的目的 找出系統(tǒng)性能瓶頸 硬件瓶頸 軟件瓶頸 提供性能優(yōu)化方案 升級硬件 改進(jìn)系統(tǒng)結(jié)構(gòu) 達(dá)到合理的硬件和軟件配置 使系統(tǒng)資源使用達(dá)到平衡 性能分析的目的 但遺憾的是 解決一個性能瓶頸,往往又會出現(xiàn)另外的瓶頸或者其他問題,所

3、 以性能優(yōu)化更加切實的目標(biāo)是做到在一定范圍內(nèi)使系統(tǒng)的各項資 源使用趨向合理和保持一定的平衡。 系統(tǒng)運行良好的時候恰恰也是各項資源達(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)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的

4、特點 常見的性能分析工具介紹 性能分析及優(yōu)化的案例 性能分析相關(guān)的人 系統(tǒng)管理員 大型應(yīng)用的系統(tǒng)結(jié)構(gòu)設(shè)計人員 軟件開發(fā)人員 性能分析相關(guān)的人 系統(tǒng)管理員 掌握系統(tǒng)運行狀況(負(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é)性

5、能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點 常見的性能分析工具介紹 性能分析及優(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磁盤陣列(RAI

6、D0, RAID1, RAID5, RAID0+1) 一些經(jīng)驗 小文件讀寫的性能瓶頸是磁盤的尋址(隨機讀寫性能更差), 評估的標(biāo)準(zhǔn)是tps 大文件讀寫的性能瓶頸是帶寬,評估的標(biāo)準(zhǔn)是持續(xù)的讀寫速 度 1. 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個話題 性能分析的目的

7、 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點 常見的性能分析工具介紹 性能分析及優(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)用的特點,比如是否有突發(fā)性使 用增長? 日常情況下,保留至少 60% 的系統(tǒng)資源,以應(yīng)付 突發(fā)使用增長。 日常情況下,資源使用率達(dá)到 80

8、% 時,你必須有 所行動了,尤其是web應(yīng)用。 系統(tǒng)硬件達(dá)到合理的配置(以適合應(yīng)用的特點 為依據(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)資源使用的特點典型應(yīng)用對系統(tǒng)資源使用的特點 常見的性能分析工具介紹 性能分析及優(yōu)化的案例 典型應(yīng)用對系統(tǒng)資源使用

9、的特點 聲明 這部分內(nèi)容主要是本人在網(wǎng)站工作多年的一些實踐經(jīng)驗積累, 所以這些 經(jīng)驗并不完全適用于其他的應(yīng)用環(huán)境。 在我的經(jīng)驗中,大多數(shù)的硬件性能問題主要和CPU、磁盤、內(nèi)存相關(guān), 還沒有遇到因為開發(fā)語言的運行效率對整個應(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)資源使用的特點 動態(tài)內(nèi)容為主的We

10、b應(yīng)用 靜態(tài)內(nèi)容為主的Web應(yīng)用 (如Squid Cache) 數(shù)據(jù)庫應(yīng)用 軟件下載 流媒體服務(wù) 典型應(yīng)用對系統(tǒng)資源使用的特點 動態(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比較頻繁(主要為隨機寫),比如生 成cache文件,更新session文件等。 內(nèi)存充足時讀取的內(nèi)容可以被cache住,cache的 命中率和文件更新的頻繁程度成反比,磁盤的讀 IO相對較小 典型應(yīng)用對系統(tǒng)資源使用的特點 靜態(tài)內(nèi)容為主的Web應(yīng)用 (如Squid

11、 Cache) 網(wǎng)絡(luò)帶寬瓶頸 小文件的隨機讀取頻繁,內(nèi)存充足時可以緩 解磁盤隨機讀的壓力 系統(tǒng)內(nèi)存不足時磁盤IO量會比較大(讀、 寫、交換內(nèi)存),因此增加CPU的開銷 典型應(yīng)用對系統(tǒng)資源使用的特點 數(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)資源使用的特點 軟件下載 網(wǎng)絡(luò)帶寬瓶頸 存儲系統(tǒng)帶寬瓶頸(讀) 流媒體服務(wù) 網(wǎng)絡(luò)帶寬瓶頸 存儲系統(tǒng)帶寬瓶頸(讀)

12、 開始第6個話題 性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點 常見的性能分析工具介紹常見的性能分析工具介紹 性能分析及優(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、中斷、上下

13、問切 換、CPU使用等。系統(tǒng)性能分析工具中,我使用最多的是這個, 除了 sysstat 工具包外,這個工具能查看的系統(tǒng)資源最多。 對于 Linux 的性能分析,100%理解 vmstat 輸出內(nèi)容的含義, 那你對系統(tǒng)性能分析的能力就算是基本掌握了。 我這里主要說明一下這個命令顯示出的部分?jǐn)?shù)據(jù)代表的含義,和 它反映出系統(tǒng)相關(guān)資源的狀況。輸出內(nèi)容共有 6 類,分別說明如 下。 工具介紹-vmstat Vmstat的輸出格式如下(CentOS 3.3) 工具介紹-vmstat Procs r: 運行的和等待(CPU時間片)運行的進(jìn)程數(shù), 這個值也可以判斷是否需要增加CPU(長期 大于1) b: 處于

14、不可中斷狀態(tài)的進(jìn)程數(shù),常見的情況 是由IO引起的 工具介紹-vmstat Memory swpd: 切換到交換內(nèi)存上的內(nèi)存(默認(rèn)以KB為單位) 如果 swpd 的值不為0,或者還比較大,比如超過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 會非常小。

15、工具介紹-vmstat Swap si: 交換內(nèi)存使用,由磁盤調(diào)入內(nèi)存 so: 交換內(nèi)存使用,由內(nèi)存調(diào)入磁盤 內(nèi)存夠用的時候,這2個值都是0,如果這2個值長期 大于0時,系統(tǒng)性能會受到影響。磁盤IO和CPU資 源都會被消耗。 我發(fā)現(xiàn)有些朋友看到空閑內(nèi)存(free)很少或接近于0 時,就認(rèn)為內(nèi)存不夠用了,實際上不能光看這一點 的,還要結(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) 隨

16、機磁盤讀寫的時候,這2個 值越大(如超 出1M),能看到CPU在IO等待的值也會越 大 工具介紹-vmstat System in: 每秒產(chǎn)生的中斷次數(shù) cs: 每秒產(chǎn)生的上下文切換次數(shù) 上面這2個值越大,會看到由內(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)該檢查原因

17、。 wa: IO等待消耗的CPU時間百分比 wa 的值高時,說明IO等待比較嚴(yán)重,這可能是由于磁盤大量作 隨機訪問造成,也有可能是磁盤的帶寬出現(xiàn)瓶頸(塊操作)。 id: CPU處在空閑狀態(tài)時間百分比 工具介紹-vmstat 情景分析 這個vmstat的輸出那些信息值得關(guān)注? Procs r: 運行的進(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)

18、中運行的進(jìn)程的狀況,CPU使 用狀況,系統(tǒng)負(fù)載,內(nèi)存使用等。它是檢查系統(tǒng)進(jìn)程 運行狀況最方便的工具了,它默認(rèn)顯示部分活動的進(jìn) 程,并且按照進(jìn)程使用CPU的多少排序。它可以顯示 全部CPU的使用狀況,也可以顯示每個進(jìn)程都運行在 那個CPU上面。 我習(xí)慣使用這個命令查看那些進(jìn)程或者那類進(jìn)程占用 CPU和內(nèi)存資源最多,以此迅速定位存在性能問題的 進(jì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)存頁

19、,正在映射給進(jìn)程使用 in_d inactive_dirty 非活躍的內(nèi)存頁,并且內(nèi)存數(shù)據(jù)被 修改,需要寫回磁盤 in_c inactive_clean 非活躍的內(nèi)存頁,干凈的數(shù)據(jù),可 以被重新分配使用 工具介紹-top 問題? in_d 和 in_c 以及 cache, buffer 的內(nèi)存有何 不同? 我的理解: actv, in_d, in_c 是 VM 中對內(nèi)存的管理組織 形式,buffer是塊設(shè)備讀寫緩沖,cache是文 件系統(tǒng)緩存 工具介紹-top 用 top 看到的進(jìn)程所處的幾種狀態(tài)(STAT列)。 D 不可中斷休眠,通常是 IO 操作所處的狀態(tài) R 正在執(zhí)行的或者處在等待執(zhí)行的

20、進(jìn)程隊列中 S 休眠中 T 暫停刮起的(比如Ctrl+Z),也可能是被 strace 命令調(diào)用中的狀 態(tài) Z 僵尸進(jìn)程,進(jìn)程執(zhí)行完成,但由于其父進(jìn)程沒有銷毀該進(jìn)程,而 被init進(jìn)程接管進(jìn)行銷毀。 W 沒有使用物理內(nèi)存,所占用的物理內(nèi)存被切換到交換內(nèi)存 高優(yōu)先級的進(jìn)程 N 低優(yōu)先級 有時候一個進(jìn)程會有多個狀態(tài)的標(biāo)志,比如SWN,SW 工具介紹-top 情景分析 前面兩次top的輸出那些信息值得關(guān)注? 圖1) Load average: 系統(tǒng)負(fù)載有降低的趨勢,但仍然較高 Running: 有3個進(jìn)程正在運行,正常,因為系統(tǒng)有4顆 CPU Cpu user: 接近200%了,有些大,服務(wù)高峰時可以

21、接受 Cpu idle: 小于200%了,需要注意 圖2) Cpu iowait:接近200%了,很大 工具介紹-free free命令顯示系統(tǒng)內(nèi)存的使用狀況(物理內(nèi)存和 交換內(nèi)存) 通過這個命令我們可以看到系統(tǒng)進(jìn)程實際使用的 物理內(nèi)存,buffer和cache使用的物理內(nèi)存 工具介紹-free free命令輸出的第二行(Mem) 這行分別顯示了物理內(nèi)存的總量(total)、已使用的 (used)、空閑的(free)、共享的(shared)、buffer、 cache的內(nèi)存。 工具介紹-free free命令輸出的第三行(-/+ buffers/cache) 這行最容易讓人迷惑。 它顯示的第一

22、個值(used這一列)是這樣得來的: Mem行used列 - Mem行buffers列 - Mem行cached列 它顯示的第二個值(free這一列)是這樣得來的: Mem行free列 + Mem行buffers列 + Mem行cached 列 工具介紹-free free命令輸出的第四行(Swap) 這行顯示交換內(nèi)存的總量、已使用量、 空閑量 通常 buffer 和 cache 可以使用的內(nèi)存 空間越大,系統(tǒng) IO 和 文件系統(tǒng)訪問的 性能越好。 工具介紹-uptime 最簡便的查看系統(tǒng)負(fù)載的工具,系統(tǒng)負(fù)載越小,系統(tǒng) 運行狀況越好,對于系統(tǒng)負(fù)載處在什么范圍內(nèi)比較合 適,我想是沒有定論的,我介

23、紹一下我的習(xí)慣。 我一般以15分鐘負(fù)載的值來評估系統(tǒng)的健康度,以10 為這個值的臨界點,如果系統(tǒng)負(fù)載持續(xù)高于10,通常 是存在某個資源長期緊張的原因,我們需要重視,并 且得開始著手解決這個問題了。 如果偶爾高于10,應(yīng)該開始留意它出現(xiàn)的頻度,這往 往是前面一種狀況的先兆。 工具介紹- sysstat工具包 這個工具包提供了著名的 sar 命令,還有非常實用的 iostat, mpstat, sa1, sa2 等命令。 這幾個命令可實現(xiàn)前面提及工具大多數(shù)的功能,除此 之外,還能查看系統(tǒng)的網(wǎng)絡(luò)帶寬狀況、每塊磁盤使用 狀況、每個磁盤分區(qū)的使用狀況等。 工具介紹- sysstat工具包 sa1, sa

24、2 這2個命令以配置在cron中定期執(zhí)行,把系統(tǒng)當(dāng)時的運 行狀況信息保存在磁盤上,每日存在一個文件中,因為有這個功 能,因此 sar 工具不單是一個性能分析的工具,這2個命令的使 用說明如下: sa1 配置在cron中可以實現(xiàn)系統(tǒng)狀態(tài)收集,比如10分鐘運行一次 sa2 配置在cron中可以實現(xiàn)每日狀態(tài)的匯總報告 你可以在系統(tǒng)crontab中添加如下配置: */10 * * * * root /usr/lib/sa/sa1 1 1 53 23 * * * root /usr/lib/sa/sa2 -A 工具介紹-其他 Iozone IO和文件系統(tǒng)性能測試的工具,我也習(xí)慣用 它作存儲系統(tǒng)的性能分析

25、。 Strace 如果我們知道一個程序執(zhí)行效率很差,需要分 析這個程序執(zhí)行時的某個階段或者某個系統(tǒng)調(diào) 用的性能狀況,可以使用 strace 命令。 其他 開始第7個話題 性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點 常見的性能分析工具介紹 性能分析及優(yōu)化的案例性能分析及優(yōu)化的案例 性能分析及優(yōu)化的案例 動態(tài)內(nèi)容為主的網(wǎng)站 動態(tài)內(nèi)容+Cache為主的網(wǎng)站 動態(tài)內(nèi)容為主的網(wǎng)站 該網(wǎng)站系統(tǒng)結(jié)構(gòu)說明 1臺Dell2650服務(wù)器, 單顆Xeon 3.0G CPU, 1G內(nèi)存,2塊72G SCSI磁盤 操作系統(tǒng) CentOS 3.3 應(yīng)用基于LA

26、MP架構(gòu),所有服務(wù)都在一臺服 務(wù)器上 動態(tài)內(nèi)容為主的網(wǎng)站 分析和優(yōu)化的過程 初期性能問題及處理 第二次優(yōu)化 第三次優(yōu)化 第四次優(yōu)化 網(wǎng)站結(jié)構(gòu)優(yōu)化 動態(tài)內(nèi)容為主的網(wǎng)站 初期性能問題及處理 表現(xiàn):早晨和下午訪問高峰時,服務(wù)器頻繁宕機, 重啟后的一段時間內(nèi)能正常服務(wù),過一會以后又變 的響應(yīng)緩慢,然后又宕機。 檢查:發(fā)現(xiàn)宕機前系統(tǒng)負(fù)載高,Apache httpd.conf 配置最大用戶數(shù)為1024 處理:修改 httpd.conf 配置文件,降到最大 512 個用戶數(shù),仍然頻繁宕機,又降到 256 個用戶數(shù), 系統(tǒng)不宕機了,但是負(fù)載很高,站點訪問極慢 動態(tài)內(nèi)容為主的網(wǎng)站 初次優(yōu)化 深入分析系統(tǒng)資源使用

27、情況(vmstat,top,ps) 結(jié)論:CPU資源時常耗盡,因此造成響應(yīng)緩慢或者 長時間沒有響應(yīng),主要是用戶進(jìn)程消耗資源嚴(yán)重。 原因:PHP程序沒有使用代碼加速,網(wǎng)站首頁是個 PHP程序,每次用戶訪問都要多次查詢數(shù)據(jù)庫,其 他程序也沒有Cache機制,數(shù)據(jù)庫查詢負(fù)荷過高。 處理:安裝配置turck-mmcache代碼加速器,改寫 網(wǎng)站首頁以及部分頻繁訪問的程序增加cache機制, 減少數(shù)據(jù)庫訪問。 動態(tài)內(nèi)容為主的網(wǎng)站 第二次優(yōu)化 一段時間后,系統(tǒng)又開始不穩(wěn)定,訪問高峰時站點無 法正常訪問 分析系統(tǒng)資源使用狀況,發(fā)現(xiàn)仍然是CPU耗盡后引起問題, 但這次系統(tǒng)IO等待消耗的CPU資源比較大。 原因

28、:上次解決了CPU資源容易耗盡的問題,目前網(wǎng)站訪問 量增加了,apache進(jìn)程數(shù)時常達(dá)到256個,導(dǎo)致內(nèi)存使用殆 盡,頻繁使用交換內(nèi)存,最終仍然導(dǎo)致CPU資源耗盡 處理:把Apache配置中的 KeepAlive 特性關(guān)閉,進(jìn)程數(shù)大量 減少,基本保持在80個進(jìn)程以內(nèi),還是會使用交換內(nèi)存,但 是服務(wù)正常了。 動態(tài)內(nèi)容為主的網(wǎng)站 第三次優(yōu)化 一段時間后,系統(tǒng)又開始不穩(wěn)定,訪問高峰時站點無 法正常訪問 分析發(fā)現(xiàn)還是CPU資源耗盡導(dǎo)致的原因。 原因:程序頻繁訪問數(shù)據(jù)庫,大量的SQL語句中有 where, order by 等子句,而大量的表沒有建索引,導(dǎo)致MySQL數(shù) 據(jù)庫負(fù)荷過高,消耗CPU資源過高

29、。 處理:優(yōu)化程序中的SQL語句,where和order by子句上的 字段建索引,程序增加Cache機制,再次使服務(wù)恢復(fù)正常。 動態(tài)內(nèi)容為主的網(wǎng)站 第四次優(yōu)化 一段時間后,系統(tǒng)又開始不穩(wěn)定,訪問高峰時 站點無法正常訪問 分析系統(tǒng)資源使用狀況,發(fā)現(xiàn)還是CPU耗盡造成的 原因:數(shù)據(jù)庫查詢過多,大部分都是復(fù)雜查詢,時 常需要遍歷全表 處理:優(yōu)化程序中的SQL語句,增加where子句上 的匹配條件,減少遍歷全部的查詢。 動態(tài)內(nèi)容為主的網(wǎng)站 網(wǎng)站結(jié)構(gòu)優(yōu)化 鑒于程序的優(yōu)化空間越來越小,避免以后仍 然出現(xiàn)問題,增加了一臺專用數(shù)據(jù)庫服務(wù)器 在后來的使用過程中,又陸續(xù)增加了1臺 Web前端服務(wù)器,和一臺只用于

30、讀的 MySQL數(shù)據(jù)庫服務(wù)器 動態(tài)內(nèi)容+Cache為主的網(wǎng)站 該網(wǎng)站系統(tǒng)結(jié)構(gòu)說明 多臺Web前端服務(wù)器, 配置都為單顆Xeon 3.0G CPU,4G內(nèi)存,2塊73G SCSI磁盤 操作系統(tǒng) CentOS 3.3 多臺MySQL數(shù)據(jù)庫服務(wù)器 基于PHP開發(fā)的應(yīng)用 動態(tài)內(nèi)容+Cache為主的網(wǎng)站 該應(yīng)用的特點 大量內(nèi)容基于數(shù)據(jù)庫,需要頻繁訪問數(shù)據(jù)庫, 并且數(shù)據(jù)更新很快 采用頁面cache機制緩解數(shù)據(jù)庫壓力,但頁 面cache只有5分鐘有效期,需要頻繁生成 新的cache Cache以文件形式存在磁盤上,都是小文件, 最小不到1k,最大不超過128k 動態(tài)內(nèi)容+Cache為主的網(wǎng)站 問題描述 訪問高峰期時Web前端負(fù)載比較高,時常超過10 訪問高峰期時Web前端響應(yīng)很慢 性能分析 負(fù)載比較高,時常會超過10,CPU Idel經(jīng)常會小于30%,有 時Idel為0,CPU io wait 很大,經(jīng)常超

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論