版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
系統(tǒng)性能分析和優(yōu)化童劍2006/03/21msn:she11c0de@系統(tǒng)性能分析和優(yōu)化童劍2006/03/211前言很高興能有這樣的機會,把我自己多年工作中對服務器硬件、軟件方面的性能分析的經(jīng)驗和體會,以及性能優(yōu)化的經(jīng)驗和各位朋友做一次分享。
這份ppt的內(nèi)容組織大致是這樣的,通過對系統(tǒng)中和性能相關的各個環(huán)節(jié)的介紹,使大家知道出現(xiàn)性能問題時可以從那些方面入手去查,而分析典型應用對系統(tǒng)資源使用的特點,讓大家對應用和系統(tǒng)資源的依賴有了更直觀的認識,然后我會介紹常見的分析及監(jiān)控系統(tǒng)資源時使用的工具,這個環(huán)節(jié)應該是最主要的,最后我會舉一個實際發(fā)生過的系統(tǒng)性能瓶頸分析和優(yōu)化的案例,作為一個實踐和總結。本文涉及的內(nèi)容基于Gnu/Linux系統(tǒng)平臺,但關于性能優(yōu)化分析和優(yōu)化的思路也能適用于其他系統(tǒng)平臺。前言2我們將會討論下列7個話題性能分析的目的性能分析相關的人性能相關的各個環(huán)節(jié)系統(tǒng)使用和優(yōu)化的原則典型應用對系統(tǒng)資源使用的特點常見的性能分析工具介紹性能分析及優(yōu)化的案例我們將會討論下列7個話題性能分析的目的3開始第1個話題性能分析的目的性能分析相關的人性能相關的各個環(huán)節(jié)系統(tǒng)使用和優(yōu)化的原則典型應用對系統(tǒng)資源使用的特點常見的性能分析工具介紹性能分析及優(yōu)化的案例開始第1個話題性能分析的目的4性能分析的目的找出系統(tǒng)性能瓶頸硬件瓶頸軟件瓶頸提供性能優(yōu)化方案升級硬件改進系統(tǒng)結構達到合理的硬件和軟件配置使系統(tǒng)資源使用達到平衡性能分析的目的找出系統(tǒng)性能瓶頸5性能分析的目的但遺憾的是
解決一個性能瓶頸,往往又會出現(xiàn)另外的瓶頸或者其他問題,所以性能優(yōu)化更加切實的目標是做到在一定范圍內(nèi)使系統(tǒng)的各項資源使用趨向合理和保持一定的平衡。系統(tǒng)運行良好的時候恰恰也是各項資源達到了一個平衡體,任何一項資源的過渡使用都會造成平衡體系破壞,從而造成系統(tǒng)負載極高或者響應遲緩。比如CPU過渡使用會造成大量進程等待CPU資源,系統(tǒng)響應變慢,等待會造成進程數(shù)增加,進程增加又會造成內(nèi)存使用增加,內(nèi)存耗盡又會造成虛擬內(nèi)存使用,使用虛擬內(nèi)存又會造成磁盤IO增加和CPU開銷增加(用于進程切換、缺頁處理的CPU開銷)性能分析的目的但遺憾的是6開始第2個話題性能分析的目的性能分析相關的人性能相關的各個環(huán)節(jié)系統(tǒng)使用和優(yōu)化的原則典型應用對系統(tǒng)資源使用的特點常見的性能分析工具介紹性能分析及優(yōu)化的案例開始第2個話題性能分析的目的7性能分析相關的人系統(tǒng)管理員大型應用的系統(tǒng)結構設計人員軟件開發(fā)人員性能分析相關的人系統(tǒng)管理員8性能分析相關的人系統(tǒng)管理員掌握系統(tǒng)運行狀況(負載)掌握系統(tǒng)資源使用情況(硬件)掌握應用程序對資源的使用情況(應用程序執(zhí)行效率,反饋給應用開發(fā)人員)有針對性的開展服務器性能優(yōu)化(硬件、軟件、軟件配置)性能分析相關的人系統(tǒng)管理員9性能分析相關的人系統(tǒng)架構設計人員了解程序執(zhí)行效率了解系統(tǒng)架構中的性能瓶頸,優(yōu)化系統(tǒng)結構設計更好的應用系統(tǒng)架構性能分析相關的人系統(tǒng)架構設計人員10性能分析相關的人軟件開發(fā)人員了解程序執(zhí)行效率改進程序邏輯、改進性能性能分析相關的人軟件開發(fā)人員11開始第3個話題性能分析的目的性能分析相關的人性能相關的各個環(huán)節(jié)系統(tǒng)使用和優(yōu)化的原則典型應用對系統(tǒng)資源使用的特點常見的性能分析工具介紹性能分析及優(yōu)化的案例開始第3個話題性能分析的目的12性能相關的各個環(huán)節(jié)硬件資源操作系統(tǒng)服務器軟件開發(fā)平臺/中間件軟件/框架軟件應用程序性能相關的各個環(huán)節(jié)硬件資源13性能相關的-硬件資源CPU內(nèi)存存儲系統(tǒng)帶寬性能相關的-硬件資源CPU14性能相關的-硬件資源CPU是否使用SMP單顆CPU的性能對依賴CPU的某些應用的影響很嚴重,比如數(shù)據(jù)庫的查詢處理性能相關的-硬件資源CPU15性能相關的-硬件資源內(nèi)存物理內(nèi)存
物理內(nèi)存不夠時會使用交換內(nèi)存交換內(nèi)存使用交換內(nèi)存會帶來磁盤IO和CPU的開銷增加
性能相關的-硬件資源內(nèi)存16性能相關的-硬件資源存儲系統(tǒng)SCSI磁盤ATA/SATA磁盤RAID磁盤陣列(RAID0,RAID1,RAID5,RAID0+1)一些經(jīng)驗小文件讀寫的性能瓶頸是磁盤的尋址(隨機讀寫性能更差),評估的標準是tps大文件讀寫的性能瓶頸是帶寬,評估的標準是持續(xù)的讀寫速度Linux可以利用空閑內(nèi)存作文件系統(tǒng)訪問的cache,因此系統(tǒng)內(nèi)存越大存儲系統(tǒng)的性能也越好性能相關的-硬件資源存儲系統(tǒng)17性能相關的-硬件資源帶寬網(wǎng)絡帶寬SCSI總線帶寬大文件訪問時SCSI的帶寬瓶頸系統(tǒng)總線帶寬性能相關的-硬件資源帶寬18性能相關的-操作系統(tǒng)SMP性能VM性能IO性能(存儲設備、網(wǎng)絡設備、異步IO)文件系統(tǒng)性能(大文件優(yōu)化、小文件優(yōu)化、寫優(yōu)化、讀優(yōu)化、網(wǎng)絡文件系統(tǒng))多線程性能性能相關的-操作系統(tǒng)SMP性能19開始第4個話題性能分析的目的性能分析相關的人性能相關的各個環(huán)節(jié)系統(tǒng)使用和優(yōu)化的原則典型應用對系統(tǒng)資源使用的特點常見的性能分析工具介紹性能分析及優(yōu)化的案例開始第4個話題性能分析的目的20系統(tǒng)使用和優(yōu)化的原則對資源的使用狀況作長期的監(jiān)控和數(shù)據(jù)收集Snmp+MRTGSar程序的優(yōu)化和系統(tǒng)結構的優(yōu)化比硬件的性能優(yōu)化更有效避免不受限制的使用系統(tǒng)資源設置各項服務對資源的使用限額,如Apache,MySQL,PHP等系統(tǒng)使用和優(yōu)化的原則對資源的使用狀況作長期的監(jiān)控和數(shù)據(jù)收集21系統(tǒng)使用和優(yōu)化的原則始終保留一定量的空閑資源多少合適?根據(jù)應用的特點,比如是否有突發(fā)性使用增長?日常情況下,保留至少60%的系統(tǒng)資源,以應付突發(fā)使用增長。日常情況下,資源使用率達到80%時,你必須有所行動了,尤其是web應用。系統(tǒng)硬件達到合理的配置(以適合應用的特點為依據(jù),資源消耗均衡為目標)系統(tǒng)性能的水桶理論系統(tǒng)使用和優(yōu)化的原則始終保留一定量的空閑資源22系統(tǒng)使用和優(yōu)化的原則應用軟件對資源的使用要均衡(理想目標)怎么樣就算是均衡了?我也在摸索中……理想狀況為:CPU消耗到50%的時候,磁盤的帶寬也到50%,磁盤的tps也到50%,內(nèi)存使用也到50%(除去可以提供給cache的內(nèi)存)系統(tǒng)使用和優(yōu)化的原則應用軟件對資源的使用要均衡(理想目標)23開始第5個話題性能分析的目的性能分析相關的人性能相關的各個環(huán)節(jié)系統(tǒng)使用和優(yōu)化的原則典型應用對系統(tǒng)資源使用的特點常見的性能分析工具介紹性能分析及優(yōu)化的案例開始第5個話題性能分析的目的24典型應用對系統(tǒng)資源使用的特點聲明這部分內(nèi)容主要是本人在網(wǎng)站工作多年的一些實踐經(jīng)驗積累,所以這些經(jīng)驗并不完全適用于其他的應用環(huán)境。在我的經(jīng)驗中,大多數(shù)的硬件性能問題主要和CPU、磁盤、內(nèi)存相關,還沒有遇到因為開發(fā)語言的運行效率對整個應用的性能造成影響,而應用程序設計的缺陷和數(shù)據(jù)庫查詢的濫用反倒是最最常見的性能問題。需要注意的是,大多數(shù)情況下,雖然性能瓶頸的起因是程序性能差或者是內(nèi)存不足或者是磁盤瓶頸等各種原因,但最終表現(xiàn)出的結果就是CPU耗盡,系統(tǒng)負載極高,響應遲緩,甚至暫時失去響應,因此我們觀察服務器狀況時,最先看的就是系統(tǒng)負載和CPU空閑度。典型應用對系統(tǒng)資源使用的特點聲明25典型應用對系統(tǒng)資源使用的特點動態(tài)內(nèi)容為主的Web應用靜態(tài)內(nèi)容為主的Web應用(如SquidCache)數(shù)據(jù)庫應用軟件下載流媒體服務典型應用對系統(tǒng)資源使用的特點動態(tài)內(nèi)容為主的Web應用26典型應用對系統(tǒng)資源使用的特點動態(tài)內(nèi)容為主的Web應用頻繁執(zhí)行程序,如Perl,PHP,Java等,消耗CPU嚴重提供并發(fā)用戶訪問,因此系統(tǒng)進程數(shù)多,消耗內(nèi)存多,當內(nèi)存不足時,使用交換內(nèi)存也會增加CPU的開銷磁盤的寫IO比較頻繁(主要為隨機寫),比如生成cache文件,更新session文件等。內(nèi)存充足時讀取的內(nèi)容可以被cache住,cache的命中率和文件更新的頻繁程度成反比,磁盤的讀IO相對較小典型應用對系統(tǒng)資源使用的特點動態(tài)內(nèi)容為主的Web應用27典型應用對系統(tǒng)資源使用的特點靜態(tài)內(nèi)容為主的Web應用(如SquidCache)網(wǎng)絡帶寬瓶頸小文件的隨機讀取頻繁,內(nèi)存充足時可以緩解磁盤隨機讀的壓力系統(tǒng)內(nèi)存不足時磁盤IO量會比較大(讀、寫、交換內(nèi)存),因此增加CPU的開銷典型應用對系統(tǒng)資源使用的特點靜態(tài)內(nèi)容為主的Web應用(如S28典型應用對系統(tǒng)資源使用的特點數(shù)據(jù)庫應用數(shù)據(jù)庫查詢語句復雜,大量的where子句,orderby,groupby排序等,CPU容易出現(xiàn)瓶頸表太大時,查詢遍歷全表造成磁盤讀的IO量大,容易出現(xiàn)讀IO等待的情況數(shù)據(jù)更新量大或者更新頻繁時,造成磁盤寫的IO量大內(nèi)存不足時頻繁使用交換內(nèi)存典型應用對系統(tǒng)資源使用的特點數(shù)據(jù)庫應用29典型應用對系統(tǒng)資源使用的特點軟件下載網(wǎng)絡帶寬瓶頸存儲系統(tǒng)帶寬瓶頸(讀)流媒體服務網(wǎng)絡帶寬瓶頸存儲系統(tǒng)帶寬瓶頸(讀)典型應用對系統(tǒng)資源使用的特點軟件下載30開始第6個話題性能分析的目的性能分析相關的人性能相關的各個環(huán)節(jié)系統(tǒng)使用和優(yōu)化的原則典型應用對系統(tǒng)資源使用的特點常見的性能分析工具介紹性能分析及優(yōu)化的案例開始第6個話題性能分析的目的31常見的性能分析工具介紹VmstatTopFreeUptimesysstat工具包IozoneStrace希望看完以上工具的使用說明,讓你能夠知道如何判斷系統(tǒng)瓶頸在那里、內(nèi)存是否夠用、CPU是否夠用、磁盤IO是否夠用、網(wǎng)絡和磁盤帶寬是否夠用等問題。常見的性能分析工具介紹Vmstat32工具介紹-vmstatvmstat是一個很全面的性能分析工具,可以觀察到系統(tǒng)的進程狀態(tài)、內(nèi)存使用、虛擬內(nèi)存使用、磁盤的IO、中斷、上下問切換、CPU使用等。系統(tǒng)性能分析工具中,我使用最多的是這個,除了sysstat工具包外,這個工具能查看的系統(tǒng)資源最多。對于Linux的性能分析,100%理解vmstat輸出內(nèi)容的含義,那你對系統(tǒng)性能分析的能力就算是基本掌握了。我這里主要說明一下這個命令顯示出的部分數(shù)據(jù)代表的含義,和它反映出系統(tǒng)相關資源的狀況。輸出內(nèi)容共有6類,分別說明如下。工具介紹-vmstat33工具介紹-vmstatVmstat的輸出格式如下(CentOS3.3)工具介紹-vmstatVmstat的輸出格式如下(CentO34工具介紹-vmstatProcsr:運行的和等待(CPU時間片)運行的進程數(shù),這個值也可以判斷是否需要增加CPU(長期大于1)b:處于不可中斷狀態(tài)的進程數(shù),常見的情況是由IO引起的工具介紹-vmstatProcs35工具介紹-vmstatMemoryswpd:切換到交換內(nèi)存上的內(nèi)存(默認以KB為單位)如果swpd的值不為0,或者還比較大,比如超過100M了,但是si,so的值長期為0,這種情況我們可以不用擔心,不會影響系統(tǒng)性能。free:空閑的物理內(nèi)存buff:作為buffercache的內(nèi)存,對塊設備的讀寫進行緩沖cache:作為pagecache的內(nèi)存,文件系統(tǒng)的cache如果cache的值大的時候,說明cache住的文件數(shù)多,如果頻繁訪問到的文件都能被cache住,那么磁盤的讀IObi會非常小。工具介紹-vmstatMemory36工具介紹-vmstatSwapsi:交換內(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時,就認為內(nèi)存不夠用了,實際上不能光看這一點的,還要結合si,so,如果free很少,但是si,so也很少(大多時候是0),那么不用擔心,系統(tǒng)性能這時不會受到影響的。工具介紹-vmstatSwap37工具介紹-vmstatIobi:從塊設備讀入的數(shù)據(jù)總量(讀磁盤)(KB/s),bo:寫入到塊設備的數(shù)據(jù)總理(寫磁盤)(KB/s)隨機磁盤讀寫的時候,這2個值越大(如超出1M),能看到CPU在IO等待的值也會越大工具介紹-vmstatIo38工具介紹-vmstatSystemin:每秒產(chǎn)生的中斷次數(shù)cs:每秒產(chǎn)生的上下文切換次數(shù)上面這2個值越大,會看到由內(nèi)核消耗的CPU時間會越多工具介紹-vmstatSystem39工具介紹-vmstatCpuus:用戶進程消耗的CPU時間百分比us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超過50%的使用,那么我們就該考慮優(yōu)化程序算法或者進行加速了(比如PHP/Perl)sy:內(nèi)核進程消耗的CPU時間百分比sy的值高時,說明系統(tǒng)內(nèi)核消耗的CPU資源多,這并不是良性的表現(xiàn),我們應該檢查原因。wa:IO等待消耗的CPU時間百分比wa的值高時,說明IO等待比較嚴重,這可能是由于磁盤大量作隨機訪問造成,也有可能是磁盤的帶寬出現(xiàn)瓶頸(塊操作)。id:CPU處在空閑狀態(tài)時間百分比工具介紹-vmstatCpu40工具介紹-vmstat情景分析這個vmstat的輸出那些信息值得關注?Procsr:運行的進程比較多,系統(tǒng)很繁忙Iobo:磁盤寫的數(shù)據(jù)量稍大,如果是大文件的寫,10M以內(nèi)基本不用擔心,如果是小文件寫2M以內(nèi)基本正常Cpuus:持續(xù)大于50,服務高峰期可以接受Cpuwa:稍微有些高Cpuid:持續(xù)小于50,服務高峰期可以接受工具介紹-vmstat情景分析41工具介紹-top這個命令可以查看系統(tǒng)中運行的進程的狀況,CPU使用狀況,系統(tǒng)負載,內(nèi)存使用等。它是檢查系統(tǒng)進程運行狀況最方便的工具了,它默認顯示部分活動的進程,并且按照進程使用CPU的多少排序。它可以顯示全部CPU的使用狀況,也可以顯示每個進程都運行在那個CPU上面。
我習慣使用這個命令查看那些進程或者那類進程占用CPU和內(nèi)存資源最多,以此迅速定位存在性能問題的進程,以及運行異常的進程。工具介紹-top這個命令可以查看系統(tǒng)中運行的進程的狀42工具介紹-topTop命令的輸出1(CentOS3.3)工具介紹-topTop命令的輸出1(CentOS3.3)43工具介紹-topTop命令的輸出2(CentOS3.3)工具介紹-topTop命令的輸出2(CentOS3.3)44工具介紹-top用top看到的內(nèi)存的說明(Mem的第2行)actvactive活躍的內(nèi)存頁,正在映射給進程使用in_dinactive_dirty非活躍的內(nèi)存頁,并且內(nèi)存數(shù)據(jù)被修改,需要寫回磁盤in_cinactive_clean非活躍的內(nèi)存頁,干凈的數(shù)據(jù),可以被重新分配使用工具介紹-top用top看到的內(nèi)存的說明(Mem的第2行45工具介紹-top問題?in_d和in_c以及cache,buffer的內(nèi)存有何不同?
我的理解:actv,in_d,in_c是VM中對內(nèi)存的管理組織形式,buffer是塊設備讀寫緩沖,cache是文件系統(tǒng)緩存工具介紹-top問題?46工具介紹-top用top看到的進程所處的幾種狀態(tài)(STAT列)。D不可中斷休眠,通常是IO操作所處的狀態(tài)R正在執(zhí)行的或者處在等待執(zhí)行的進程隊列中S休眠中T暫停刮起的(比如Ctrl+Z),也可能是被strace命令調(diào)用中的狀態(tài)Z僵尸進程,進程執(zhí)行完成,但由于其父進程沒有銷毀該進程,而被init進程接管進行銷毀。W沒有使用物理內(nèi)存,所占用的物理內(nèi)存被切換到交換內(nèi)存<高優(yōu)先級的進程N低優(yōu)先級有時候一個進程會有多個狀態(tài)的標志,比如SWN,SW工具介紹-top用top看到的進程所處的幾種狀態(tài)(STA47工具介紹-top情景分析前面兩次top的輸出那些信息值得關注?圖1)Loadaverage:系統(tǒng)負載有降低的趨勢,但仍然較高Running:有3個進程正在運行,正常,因為系統(tǒng)有4顆CPUCpuuser:接近200%了,有些大,服務高峰時可以接受Cpuidle:小于200%了,需要注意圖2)Cpuiowait:接近200%了,很大工具介紹-top情景分析48工具介紹-freefree命令顯示系統(tǒng)內(nèi)存的使用狀況(物理內(nèi)存和交換內(nèi)存)通過這個命令我們可以看到系統(tǒng)進程實際使用的物理內(nèi)存,buffer和cache使用的物理內(nèi)存工具介紹-freefree命令顯示系統(tǒng)內(nèi)存的使用狀況(物理內(nèi)49工具介紹-freefree命令輸出的第二行(Mem)
這行分別顯示了物理內(nèi)存的總量(total)、已使用的(used)、空閑的(free)、共享的(shared)、buffer、cache的內(nèi)存。工具介紹-freefree命令輸出的第二行(Mem)50工具介紹-freefree命令輸出的第三行(-/+buffers/cache)這行最容易讓人迷惑。它顯示的第一個值(used這一列)是這樣得來的:Mem行used列-Mem行buffers列-Mem行cached列
它顯示的第二個值(free這一列)是這樣得來的:Mem行free列+Mem行buffers列+Mem行cached列工具介紹-freefree命令輸出的第三行(-/+buff51工具介紹-freefree命令輸出的第四行(Swap)這行顯示交換內(nèi)存的總量、已使用量、空閑量通常buffer和cache可以使用的內(nèi)存空間越大,系統(tǒng)IO和文件系統(tǒng)訪問的性能越好。工具介紹-freefree命令輸出的第四行(Swap)52工具介紹-uptime最簡便的查看系統(tǒng)負載的工具,系統(tǒng)負載越小,系統(tǒng)運行狀況越好,對于系統(tǒng)負載處在什么范圍內(nèi)比較合適,我想是沒有定論的,我介紹一下我的習慣。
我一般以15分鐘負載的值來評估系統(tǒng)的健康度,以10為這個值的臨界點,如果系統(tǒng)負載持續(xù)高于10,通常是存在某個資源長期緊張的原因,我們需要重視,并且得開始著手解決這個問題了。
如果偶爾高于10,應該開始留意它出現(xiàn)的頻度,這往往是前面一種狀況的先兆。工具介紹-uptime最簡便的查看系統(tǒng)負載的工具,系53工具介紹-sysstat工具包這個工具包提供了著名的sar命令,還有非常實用的iostat,mpstat,sa1,sa2等命令。
這幾個命令可實現(xiàn)前面提及工具大多數(shù)的功能,除此之外,還能查看系統(tǒng)的網(wǎng)絡帶寬狀況、每塊磁盤使用狀況、每個磁盤分區(qū)的使用狀況等。
工具介紹-sysstat工具包這個工具包提供了著名54工具介紹-sysstat工具包sa1,sa2這2個命令以配置在cron中定期執(zhí)行,把系統(tǒ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/sa1115323***root/usr/lib/sa/sa2-A
工具介紹-sysstat工具包sa1,sa2這55工具介紹-其他IozoneIO和文件系統(tǒng)性能測試的工具,我也習慣用它作存儲系統(tǒng)的性能分析。Strace如果我們知道一個程序執(zhí)行效率很差,需要分析這個程序執(zhí)行時的某個階段或者某個系統(tǒng)調(diào)用的性能狀況,可以使用strace命令。其他工具介紹-其他Iozone56開始第7個話題性能分析的目的性能分析相關的人性能相關的各個環(huán)節(jié)系統(tǒng)使用和優(yōu)化的原則典型應用對系統(tǒng)資源使用的特點常見的性能分析工具介紹性能分析及優(yōu)化的案例開始第7個話題性能分析的目的57性能分析及優(yōu)化的案例動態(tài)內(nèi)容為主的網(wǎng)站動態(tài)內(nèi)容+Cache為主的網(wǎng)站性能分析及優(yōu)化的案例動態(tài)內(nèi)容為主的網(wǎng)站58動態(tài)內(nèi)容為主的網(wǎng)站該網(wǎng)站系統(tǒng)結構說明1臺Dell2650服務器,單顆Xeon3.0GCPU,1G內(nèi)存,2塊72GSCSI磁盤操作系統(tǒng)CentOS3.3應用基于LAMP架構,所有服務都在一臺服務器上動態(tài)內(nèi)容為主的網(wǎng)站該網(wǎng)站系統(tǒng)結構說明59動態(tài)內(nèi)容為主的網(wǎng)站分析和優(yōu)化的過程初期性能問題及處理第二次優(yōu)化第三次優(yōu)化第四次優(yōu)化網(wǎng)站結構優(yōu)化動態(tài)內(nèi)容為主的網(wǎng)站分析和優(yōu)化的過程60動態(tài)內(nèi)容為主的網(wǎng)站初期性能問題及處理表現(xiàn):早晨和下午訪問高峰時,服務器頻繁宕機,重啟后的一段時間內(nèi)能正常服務,過一會以后又變的響應緩慢,然后又宕機。檢查:發(fā)現(xiàn)宕機前系統(tǒng)負載高,Apachehttpd.conf配置最大用戶數(shù)為1024處理:修改httpd.conf配置文件,降到最大512個用戶數(shù),仍然頻繁宕機,又降到256個用戶數(shù),系統(tǒng)不宕機了,但是負載很高,站點訪問極慢動態(tài)內(nèi)容為主的網(wǎng)站初期性能問題及處理61動態(tài)內(nèi)容為主的網(wǎng)站初次優(yōu)化深入分析系統(tǒng)資源使用情況(vmstat,top,ps)結論:CPU資源時常耗盡,因此造成響應緩慢或者長時間沒有響應,主要是用戶進程消耗資源嚴重。原因:PHP程序沒有使用代碼加速,網(wǎng)站首頁是個PHP程序,每次用戶訪問都要多次查詢數(shù)據(jù)庫,其他程序也沒有Cache機制,數(shù)據(jù)庫查詢負荷過高。處理:安裝配置turck-mmcache代碼加速器,改寫網(wǎng)站首頁以及部分頻繁訪問的程序增加cache機制,減少數(shù)據(jù)庫訪問。動態(tài)內(nèi)容為主的網(wǎng)站初次優(yōu)化62動態(tài)內(nèi)容為主的網(wǎng)站第二次優(yōu)化一段時間后,系統(tǒng)又開始不穩(wěn)定,訪問高峰時站點無法正常訪問分析系統(tǒng)資源使用狀況,發(fā)現(xiàn)仍然是CPU耗盡后引起問題,但這次系統(tǒng)IO等待消耗的CPU資源比較大。原因:上次解決了CPU資源容易耗盡的問題,目前網(wǎng)站訪問量增加了,apache進程數(shù)時常達到256個,導致內(nèi)存使用殆盡,頻繁使用交換內(nèi)存,最終仍然導致CPU資源耗盡處理:把Apache配置中的KeepAlive特性關閉,進程數(shù)大量減少,基本保持在80個進程以內(nèi),還是會使用交換內(nèi)存,但是服務正常了。動態(tài)內(nèi)容為主的網(wǎng)站第二次優(yōu)化63動態(tài)內(nèi)容為主的網(wǎng)站第三次優(yōu)化一段時間后,系統(tǒng)又開始不穩(wěn)定,訪問高峰時站點無法正常訪問分析發(fā)現(xiàn)還是CPU資源耗盡導致的原因。原因:程序頻繁訪問數(shù)據(jù)庫,大量的SQL語句中有where,orderby等子句,而大量的表沒有建索引,導致MySQL數(shù)據(jù)庫負荷過高,消耗CPU資源過高。處理:優(yōu)化程序中的SQL語句,where和orderby子句上的字段建索引,程序增加Cache機制,再次使服務恢復正常。動態(tài)內(nèi)容為主的網(wǎng)站第三次優(yōu)化64動態(tài)內(nèi)容為主的網(wǎng)站第四次優(yōu)化一段時間后,系統(tǒng)又開始不穩(wěn)定,訪問高峰時站點無法正常訪問分析系統(tǒng)資源使用狀況,發(fā)現(xiàn)還是CPU耗盡造成的原因:數(shù)據(jù)庫查詢過多,大部分都是復雜查詢,時常需要遍歷全表處理:優(yōu)化程序中的SQL語句,增加where子句上的匹配條件,減少遍歷全部的查詢。動態(tài)內(nèi)容為主的網(wǎng)站第四次優(yōu)化65動態(tài)內(nèi)容為主的網(wǎng)站網(wǎng)站結構優(yōu)化鑒于程序的優(yōu)化空間越來越小,避免以后仍然出現(xiàn)問題,增加了一臺專用數(shù)據(jù)庫服務器在后來的使用過程中,又陸續(xù)增加了1臺Web前端服務器,和一臺只用于讀的MySQL數(shù)據(jù)庫服務器動態(tài)內(nèi)容為主的網(wǎng)站網(wǎng)站結構優(yōu)化66動態(tài)內(nèi)容+Cache為主的網(wǎng)站該網(wǎng)站系統(tǒng)結構說明多臺Web前端服務器,配置都為單顆Xeon3.0GCPU,4G內(nèi)存,2塊73GSCSI磁盤操作系統(tǒng)CentOS3.3多臺MySQL數(shù)據(jù)庫服務器基于PHP開發(fā)的應用動態(tài)內(nèi)容+Cache為主的網(wǎng)站該網(wǎng)站系統(tǒng)結構說明67動態(tài)內(nèi)容+Cache為主的網(wǎng)站該應用的特點大量內(nèi)容基于數(shù)據(jù)庫,需要頻繁訪問數(shù)據(jù)庫,并且數(shù)據(jù)更新很快采用頁面cache機制緩解數(shù)據(jù)庫壓力,但頁面cache只有5分鐘有效期,需要頻繁生成新的cacheCache以文件形式存在磁盤上,都是小文件,最小不到1k,最大不超過128k動態(tài)內(nèi)容+Cache為主的網(wǎng)站該應用的特點68動態(tài)內(nèi)容+Cache為主的網(wǎng)站問題描述訪問高峰期時Web前端負載比較高,時常超過10訪問高峰期時Web前端響應很慢性能分析負載比較高,時常會超過10,CPUIdel經(jīng)常會小于30%,有時Idel為0,CPUiowait很大,經(jīng)常超過30%,磁
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度醫(yī)院醫(yī)療廢物處理設施建設合同4篇
- 2025年度個人創(chuàng)業(yè)貸款合同示范文本8篇
- 二零二五年度美容院美容護膚品生產(chǎn)股份合作合同4篇
- 二零二五版木質家具定制設計與生產(chǎn)加工合同3篇
- 二零二五年度電子商務平臺標志設計及用戶體驗合同3篇
- 二零二五年度托盤租賃與供應鏈金融結合合同范本3篇
- 二零二五年度昌平區(qū)食堂員工激勵與績效考核合同3篇
- 2025年度汽車租賃與品牌合作推廣合同范本3篇
- 二零二五年度城市綠化工程承包合同14篇
- 2025年度線上線下聯(lián)動大型促銷活動合作合同3篇
- 河北省滄州市五縣聯(lián)考2024-2025學年高一上學期期末英語試卷(含答案含含聽力原文無音頻)
- 急性肺栓塞搶救流程
- 《統(tǒng)計學-基于Python》 課件全套 第1-11章 數(shù)據(jù)與Python語言-時間序列分析和預測
- 《形象價值百萬》課件
- 紅色文化教育國內(nèi)外研究現(xiàn)狀范文十
- 中醫(yī)基礎理論-肝
- 小學外來人員出入校門登記表
- 《土地利用規(guī)劃學》完整課件
- GB/T 25283-2023礦產(chǎn)資源綜合勘查評價規(guī)范
- 《汽車衡全自動智能稱重系統(tǒng)》設計方案
- 義務教育歷史課程標準(2022年版)
評論
0/150
提交評論