丨性能分析概述問題歸根結底原因_第1頁
丨性能分析概述問題歸根結底原因_第2頁
丨性能分析概述問題歸根結底原因_第3頁
丨性能分析概述問題歸根結底原因_第4頁
丨性能分析概述問題歸根結底原因_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

談論應用程序系統和互聯網服務的性能時,我們首先要清楚外部的性能指標是什么。最重要也最普遍的指標有三個:服務延遲(SericeLaeny)、吞吐率(Throuhput)和資源使用率(ResoreUilizaion)。我們分別來看看。雖然具體的定義和度量有很多種,比些度量只考慮系統本身的服務時間,而不考慮其它因素(比如網絡傳輸時間)。但我個人堅持,這個指標是直接針對客戶體驗的,因此不能僅僅從自己的系統角度衡量,而必須是端到端的延遲度量(EndToEn,rE2E)。因為只有這樣來定義這一指標,才能準確地抓住“外部性能”這一特點。任何系統和服務的設計和搭建都是為了給客戶來用的,如果不緊緊抓住“客戶體驗”這一根這一指標和前面講的延遲指標相輔相成,一個注重時間,就是服務延遲;一個注重空間,也就是系統容量。一個系統的外部性能主要受到這兩個條件的約束,。比如,一個聊天服務系統,可以提供每秒鐘一百萬的吞吐率,但是客戶的延遲是5分鐘以上,那么這個“一百萬的吞吐率”沒啥意義。反之,延遲很短,但是吞吐率很對一個系統而言,如果吞吐率很低,服務延遲往往會非常穩定。當吞吐率增高時,延遲在吞吐率低于每秒600時,延遲小于5毫秒,這個延遲相對穩定。然后隨著吞吐率變大,延遲飛速攀升。一般而言,根據系統的延遲可接受大小,我們需要控制負載流量,以免延遲過大而影響客戶體驗。我們在測量延遲的時候,不僅要計算均值,還需要注意延遲的分布情況,比如,有百分之幾的在服務允許的范圍,有百分之幾的略微超出了,有百分之幾的完全不可接受。多數情況下,平均延遲達標了,但是其中可能有很大比例(比如20%)遠遠超出了我們可接受的范圍。所以,我們在規定延遲標準的時候,除了均值,還需要定義百分位數的可接受值。比如,平均延遲10毫秒,P90小于30毫秒,P99小于50毫秒等等。超過這個峰值極限,系統就會超載,除了服務延遲,還會造成一系列的性能問題(比如系統掛掉)。這個峰值極限往往需要經過仔細的性能測試,并且結合延遲標準來確定。一個因素是意外的緩沖(Buffer)和恢復(DisasterRecovery,orDR)。一個現實世界中的系統,隨時都會有意外(比如流量波動)或者部分網絡故障,這就需要整個系統資源保留一定的緩沖,來應付這些意外和從發生的中恢復。比如CPU的使用率,雖然理論上可以到100%,但考慮這些因素,實際的使用率指標往往遠遠低于100%。資源指的是一個計算機系統,程序和互聯網服務會用到的每一種資源,比如CPU、網絡等。換句話說,客戶的請求在處理時在某個地方“卡住了”。這個卡住的地方就叫“瓶頸”(或者叫卡點,Chokepoint)。CPUCPUQPI(QuickPathInterconnect,處理器之間的快速通和外部IO:包括處理器的IO的接口性能、各種系統(尤其是HDD和SSD性網絡:包括服務器到機柜交換機的網絡、數據中心的網絡、CDN和互聯網。要實現這一目的,就需要找到系統和服務的性能瓶頸,然后盡可能的消除瓶頸,或者降低瓶頸帶來的影響。系統和服務有性能瓶頸就說明這個地方的資源不夠用了。所謂最大的性能瓶頸,就是說這個地方的程度最大,相對而言,其他地方的資源有富余。簡單的內存大小。除了內存使用量,還有內存帶寬和內存延遲。找到性能最大瓶頸后,具體的優化方式就是什么資源不夠就加什么資源,同時盡量降低資源消耗,這樣就可以做到在資源總量一定的情況下,有能力支撐更高的吞吐率更低的延遲。當我們有了比較多的性能分析和優化的經驗后,慢慢就會對一個系統的內部各個模塊的交互,以及各種性能問題肚里有數了。這種時候,適度地做一些理論推測是合理的。就像一個有經驗的醫生,往往稍微了解一下的情況,就猜個不離十。這就是經驗的重要性。不過,再有經驗的醫生,還是需要做進一步的檢驗,尤其是面對復雜的和病情。同樣的,無論性能分析的經驗多豐富,我們也需要謹慎地做性能測試和數據分析,尤其是在針對重要系統的時候。這一點可以說是性能分析和優化的第一原則。當我們懷疑性能有問題的時候,應該通過合理的測試、日志分析,并作合適的剖析(Profillig),來分析出哪里有問題,從而有的放矢,而不是憑感覺、撞運氣。比如,如果是CPU相關的性能問題。按照我們學過的帕累托8020定律,系統絕大多數的時間應該都耗費在少量的代碼片段里面。如何找出這些需要優化的代碼呢?唯一可靠的辦法就是rofile。現代流行的各種編程語言,比如Jaa和Python等,都有相關的rofile工具。所以,會熟練使用這些profile工具是性能分析和優化的必要條件。我們舉幾個例子,比如Java語言,就有很多工具,像JVMTI(JVMToolsInterface,JVM工具接口),就為性能分析器提供了方便的鉤子,可以用來諸如函數調用、線程相關的、類加載之類的。再比如對Python語言來說,我們可以用sys.setprofile函數,Python的函數調用返回異常等。收獲知識。我們做性能分析時候,也是需要根據實

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論