版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、前言 很高興能有這樣的機(jī)會,把我自己多年工作中對服務(wù)器硬件、軟件方面的性能分析的經(jīng)驗(yàn)和體會,以及性能優(yōu)化的經(jīng)驗(yàn)和各位朋友做一次分享。 這份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)該是最主要的,最后我會舉一個實(shí)際發(fā)生過的系統(tǒng)性能瓶頸分析和優(yōu)化的案例,作為一個實(shí)踐和總結(jié)。 本文涉及的內(nèi)容基于Gnu/Linux系統(tǒng)平臺,但關(guān)于性能優(yōu)化分析和優(yōu)化的思路也能適用于其他系統(tǒng)平臺。我們將會討
2、論下列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á)到平衡性能分析的目的 但遺憾的是 解決一個性能瓶頸,往往又會出現(xiàn)另外的瓶頸或者其他問題,所以性能優(yōu)化更加切實(shí)的目標(biāo)是做
3、到在一定范圍內(nèi)使系統(tǒng)的各項(xiàng)資源使用趨向合理和保持一定的平衡。 系統(tǒng)運(yùn)行良好的時候恰恰也是各項(xiàng)資源達(dá)到了一個平衡體,任何一項(xiàng)資源的過渡使用都會造成平衡體系破壞,從而造成系統(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)資源使用的特點(diǎn) 常見的性能分析工具介紹 性能分析及優(yōu)化的案
4、例性能分析相關(guān)的人 系統(tǒng)管理員 大型應(yīng)用的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)人員 軟件開發(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è)計(jì)人員 了解程序執(zhí)行效率 了解系統(tǒng)架構(gòu)中的性能瓶頸,優(yōu)化系統(tǒng)結(jié)構(gòu) 設(shè)計(jì)更好的應(yīng)用系統(tǒng)架構(gòu)性能分析相關(guān)的人 軟件開發(fā)人員 了解程序執(zhí)行效率 改進(jìn)程序邏輯、改進(jìn)性能開始第3個話題 性能分析的目的 性能分析相關(guān)的人性能相關(guān)的各個環(huán)節(jié)性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的
5、特點(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, RAID5, RAID0+1)一些經(jīng)驗(yàn) 小文件讀寫的性能瓶頸
6、是磁盤的尋址(隨機(jī)讀寫性能更差),評估的標(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個話題 性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié)系統(tǒng)使用和優(yōu)化的原則系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使
7、用的特點(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è)置各項(xiàng)服務(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á)到合理的配置(以適合應(yīng)用的特點(diǎn)為依據(jù),資源消耗均衡為目標(biāo)
8、) 系統(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īng)用對系統(tǒng)資源使用的特點(diǎn) 常見的性能分析工具介紹 性能分析及優(yōu)化的案例典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn) 聲明 這部分內(nèi)容主要是本人在網(wǎng)站工作多年的一些實(shí)踐經(jīng)驗(yàn)積累, 所以這些經(jīng)驗(yàn)并不完全適用于其他的應(yīng)用環(huán)境。 在我的經(jīng)驗(yàn)中,大多
9、數(shù)的硬件性能問題主要和CPU、磁盤、內(nèi)存相關(guān), 還沒有遇到因?yàn)殚_發(fā)語言的運(yùn)行效率對整個應(yīng)用的性能造成影響,而應(yīng)用程序設(shè)計(jì)的缺陷和數(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)資源使用的特點(diǎn) 動態(tài)內(nèi)容為主的We
10、b應(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量會比較大(讀、寫、交換內(nèi)存),因此增加CPU的開
11、銷典型應(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%理解 vmstat 輸
13、出內(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,或者還比較大,比如超過100M了,但
14、是 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)性能會受到影響。磁盤IO和CPU資源都會被消耗
15、。我發(fā)現(xiàn)有些朋友看到空閑內(nèi)存(free)很少或接近于0時,就認(rèn)為內(nèi)存不夠用了,實(shí)際上不能光看這一點(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個值越大,會看到由內(nèi)核消耗的CPU時間會越多工具
16、介紹-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)時間百分比工具介紹-vmstat 情景分析 這個vmstat的輸出那
17、些信息值得關(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)行在那個CPU上面。 我習(xí)慣使用這個命令查看那些進(jìn)程
18、或者那類進(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 和 in_c 以及 cache, buffer 的
19、內(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í)行的進(jìn)程隊(duì)列中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ùn) 低優(yōu)先級有時候一個進(jìn)程會有多個狀態(tài)的標(biāo)志,比
20、如SWN,SW工具介紹-top 情景分析 前面兩次top的輸出那些信息值得關(guān)注? 圖1) Load average: 系統(tǒng)負(fù)載有降低的趨勢,但仍然較高 Running: 有3個進(jìn)程正在運(yùn)行,正常,因?yàn)橄到y(tǒng)有4顆CPU Cpu user: 接近200%了,有些大,服務(wù)高峰時可以接受 Cpu idle: 小于200%了,需要注意 圖2) Cpu iowait:接近200%了,很大工具介紹-freefree命令顯示系統(tǒng)內(nèi)存的使用狀況(物理內(nèi)存和交換內(nèi)存)通過這個命令我們可以看到系統(tǒng)進(jìn)程實(shí)際使用的物理內(nèi)存,buffer和cache使用的物理內(nèi)存工具介紹-free free命令輸出的第二行(Mem) 這
21、行分別顯示了物理內(nèi)存的總量(total)、已使用的(used)、空閑的(free)、共享的(shared)、buffer、cache的內(nèi)存。工具介紹-free free命令輸出的第三行(-/+ buffers/cache) 這行最容易讓人迷惑。 它顯示的第一個值(used這一列)是這樣得來的: Mem行used列 - Mem行buffers列 - Mem行cached列 它顯示的第二個值(free這一列)是這樣得來的: Mem行free列 + Mem行buffers列 + Mem行cached列工具介紹-free free命令輸出的第四行(Swap) 這行顯示交換內(nèi)存的總量、已使用量、空閑量
22、通常 buffer 和 cache 可以使用的內(nèi)存空間越大,系統(tǒng) IO 和 文件系統(tǒng)訪問的性能越好。工具介紹-uptime 最簡便的查看系統(tǒng)負(fù)載的工具,系統(tǒng)負(fù)載越小,系統(tǒng)運(yùn)行狀況越好,對于系統(tǒng)負(fù)載處在什么范圍內(nèi)比較合適,我想是沒有定論的,我介紹一下我的習(xí)慣。 我一般以15分鐘負(fù)載的值來評估系統(tǒng)的健康度,以10為這個值的臨界點(diǎn),如果系統(tǒng)負(fù)載持續(xù)高于10,通常是存在某個資源長期緊張的原因,我們需要重視,并且得開始著手解決這個問題了。 如果偶爾高于10,應(yīng)該開始留意它出現(xiàn)的頻度,這往往是前面一種狀況的先兆。工具介紹- sysstat工具包 這個工具包提供了著名的 sar 命令,還有非常實(shí)用的 ios
23、tat, mpstat, sa1, sa2 等命令。 這幾個命令可實(shí)現(xiàn)前面提及工具大多數(shù)的功能,除此之外,還能查看系統(tǒng)的網(wǎng)絡(luò)帶寬狀況、每塊磁盤使用狀況、每個磁盤分區(qū)的使用狀況等。 工具介紹- sysstat工具包 sa1, sa2 這2個命令以配置在cron中定期執(zhí)行,把系統(tǒng)當(dāng)時的運(yùn)行狀況信息保存在磁盤上,每日存在一個文件中,因?yàn)橛羞@個功能,因此 sar 工具不單是一個性能分析的工具,這2個命令的使用說明如下: sa1 配置在cron中可以實(shí)現(xiàn)系統(tǒng)狀態(tài)收集,比如10分鐘運(yùn)行一次 sa2 配置在cron中可以實(shí)現(xiàn)每日狀態(tài)的匯總報告 你可以在系統(tǒng)crontab中添加如下配置: */10 * * *
24、 * root /usr/lib/sa/sa1 1 1 53 23 * * * root /usr/lib/sa/sa2 -A 工具介紹-其他 Iozone IO和文件系統(tǒng)性能測試的工具,我也習(xí)慣用它作存儲系統(tǒng)的性能分析。 Strace 如果我們知道一個程序執(zhí)行效率很差,需要分析這個程序執(zhí)行時的某個階段或者某個系統(tǒng)調(diào)用的性能狀況,可以使用 strace 命令。 其他開始第7個話題 性能分析的目的 性能分析相關(guān)的人 性能相關(guān)的各個環(huán)節(jié) 系統(tǒng)使用和優(yōu)化的原則 典型應(yīng)用對系統(tǒng)資源使用的特點(diǎn) 常見的性能分析工具介紹性能分析及優(yōu)化的案例性能分析及優(yōu)化的案例性能分析及優(yōu)化的案例 動態(tài)內(nèi)容為主的網(wǎng)站 動態(tài)內(nèi)
25、容+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)用基于LAMP架構(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ù)器頻繁宕機(jī),重啟后的一段時間內(nèi)能正常服務(wù),過一會以后又變的響應(yīng)緩慢,然后又宕機(jī)。 檢查:發(fā)現(xiàn)宕機(jī)前系統(tǒng)負(fù)載高,Apache httpd.conf 配置最大用戶數(shù)為1024 處理:修改
26、 httpd.conf 配置文件,降到最大 512 個用戶數(shù),仍然頻繁宕機(jī),又降到 256 個用戶數(shù),系統(tǒng)不宕機(jī)了,但是負(fù)載很高,站點(diǎn)訪問極慢動態(tài)內(nèi)容為主的網(wǎng)站 初次優(yōu)化 深入分析系統(tǒng)資源使用情況(vmstat,top,ps) 結(jié)論:CPU資源時常耗盡,因此造成響應(yīng)緩慢或者長時間沒有響應(yīng),主要是用戶進(jìn)程消耗資源嚴(yán)重。 原因:PHP程序沒有使用代碼加速,網(wǎng)站首頁是個PHP程序,每次用戶訪問都要多次查詢數(shù)據(jù)庫,其他程序也沒有Cache機(jī)制,數(shù)據(jù)庫查詢負(fù)荷過高。 處理:安裝配置turck-mmcache代碼加速器,改寫網(wǎng)站首頁以及部分頻繁訪問的程序增加cache機(jī)制,減少數(shù)據(jù)庫訪問。動態(tài)內(nèi)容為主的網(wǎng)
27、站 第二次優(yōu)化 一段時間后,系統(tǒng)又開始不穩(wěn)定,訪問高峰時站點(diǎn)無法正常訪問 分析系統(tǒng)資源使用狀況,發(fā)現(xiàn)仍然是CPU耗盡后引起問題,但這次系統(tǒng)IO等待消耗的CPU資源比較大。 原因:上次解決了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)定,訪問高峰時站點(diǎn)無法正常訪問 分析發(fā)現(xiàn)還是CPU資源耗盡導(dǎo)致的原因
28、。 原因:程序頻繁訪問數(shù)據(jù)庫,大量的SQL語句中有 where, order by 等子句,而大量的表沒有建索引,導(dǎo)致MySQL數(shù)據(jù)庫負(fù)荷過高,消耗CPU資源過高。 處理:優(yōu)化程序中的SQL語句,where和order by子句上的字段建索引,程序增加Cache機(jī)制,再次使服務(wù)恢復(fù)正常。動態(tài)內(nèi)容為主的網(wǎng)站 第四次優(yōu)化 一段時間后,系統(tǒng)又開始不穩(wěn)定,訪問高峰時站點(diǎ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)化
29、 鑒于程序的優(yōu)化空間越來越小,避免以后仍然出現(xiàn)問題,增加了一臺專用數(shù)據(jù)庫服務(wù)器 在后來的使用過程中,又陸續(xù)增加了1臺Web前端服務(wù)器,和一臺只用于讀的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)用的特點(diǎn) 大量內(nèi)容基于數(shù)據(jù)庫,需要頻繁訪問數(shù)據(jù)庫,并且數(shù)據(jù)更新很快 采用頁面cache機(jī)制緩解數(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,C
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年華東師大版八年級物理下冊階段測試試卷含答案
- 2025年滬科版八年級語文上冊月考試卷含答案
- 2024年金山職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 2025年滬科版五年級數(shù)學(xué)下冊階段測試試卷
- 認(rèn)知實(shí)習(xí)報告總結(jié)
- 2024版企業(yè)禮品批量采購協(xié)議模板版B版
- 專用設(shè)備長期訂購合同2024年版版
- 2025年浙教版九年級化學(xué)下冊階段測試試卷含答案
- 2024年重慶幼兒師范高等??茖W(xué)校高職單招語文歷年參考題庫含答案解析
- 2024版?zhèn)€人貸款購置二手房合同3篇
- 教育綜合體項(xiàng)目策劃書
- 軟件開發(fā)項(xiàng)目服務(wù)方案
- 2024版質(zhì)量管理培訓(xùn)
- 2024年廣東省公務(wù)員錄用考試《行測》真題及答案解析
- 2024至2030年中國液體罐式集裝箱數(shù)據(jù)監(jiān)測研究報告
- 四川省2024年中考數(shù)學(xué)試卷十七套合卷【附答案】
- 家用電子產(chǎn)品維修工(中級)職業(yè)技能鑒定考試題庫(含答案)
- 無脊椎動物課件-2024-2025學(xué)年人教版生物七年級上冊
- 2024年銀發(fā)健康經(jīng)濟(jì)趨勢與展望報告:新老人、新需求、新生態(tài)-AgeClub
- 2024年江西省“振興杯”家務(wù)服務(wù)員競賽考試題庫(含答案)
- 吉林省2024年中考物理試題(含答案)
評論
0/150
提交評論