1. 程式人生 > >《圖解性能分析》學習小結

《圖解性能分析》學習小結

dbms 模擬 不能 等待隊列 標定 iss lru 實施 產生

一、《圖解性能分析》學習小結

1性能的基礎知識

tips:和數據庫交互時,應用程序考慮DBMS結合優化。

2性能分析的基礎

性能問題的處理和性能調優從正確的測量開始。

2.2 性能信息

分段查找的原則

性能信息的三種類型:概要(總的、平均的)、事件記錄(所有瞬時)、快照形式(某一時刻)

不同的類型有不同的使用場景。

排隊理論與平均等待時間。(註意核數比較少的情況下CPU使用率和等待隊列)

產品中:1.能否獲得合適的信息?

2.定期確認性能?運維時有問題能夠咨詢開發方。

2.4 OS命令

命令的名稱

性能信息的種類

在哪裏測量(可以分段查找哪裏的信息)

能知道的信息、不能知道的信息

一起使用更有效果的性能信息

常用命令:TODO

3 Web/AP服務器

在不同的地方觀察不同的指示器:比如在Web服務器上監控訪問日誌->在AP服務器的OS上查看vmstat->在JavaVM監控profile

4 性能調優

可以使用的技巧:

省略循環

訪問頻率高的數據存放在散列表中

訪問頻率高的放在使用位置附近

同步改成異步

負載均衡器

LRU算法(least recently used):丟棄最近沒有使用的數據

分割處理或者細化鎖的粒度

使用多層緩存

使用巨幀和高速網絡

關聯性、綁定、粘滯會話

寫時復制

研究cache miss相關原理及解決辦法(待學習)

兩個進程串行完成一個流程,如果一個進程遇到瓶頸,可以將部分處理流程分給另一個流程處理

5 性能測試

5.1 性能測試的概要

5.1.1 項目工程中的性能測試

整個項目生命周期內,有很多環境都需要考慮性能測試相關的任務

5.1.2不同職責的性能測試相關人員

從項目經理到基礎設施設計負責人到應用程序設計負責人及性能測試負責人均需考慮性能

5.2 常見的失敗情況:

A不能在期限內完成:

後期工程才暴露性能問題的原因:

只有在生成環境中才出現

問題的顯現需要很多條件

因為特定的操作才導致性能問題

B性能就是差!但是解決不了

原因:開發能力不足(占用CPU的程序、內存消耗大、性能差的SQL)、管理流程不正常(開發過程中不能把握性能狀況,發生問題時難以解釋)、人才不足

C沒有考慮到環境差異而導致的發生問題

開發環境和實際環境的硬件差異等

D壓力場景設計不完備導致發生問題

實際使用場景更復雜的使用,而測試場景過於單一簡單

F沒有考慮到緩沖、緩存的使用而發生的問題

頁面測試中常見、定位中類似同UE反復和不同UE

G沒有考慮到思考時間而導致發生問題

真實使用頁面和測試對頁面的點擊處理不同

H報告內容難以理解導致客戶不能認同

客戶關心的焦點在:實際環境中運行是否會有性能方面的問題

I客戶因為存在不信任感到不能認同

比如反復調優但沒有結論等。

溝通、共享性能測試的整體過程

J測試很花時間

搭建與生產環境一樣的結構

生成用於產生負載的環境與路徑

設置用於性能測試的資源統計監控

負載生成場景的腳本的生成

生成用於性能測試的模擬數據

性能測試的實施周期

評價結果

排查瓶頸

生成結果報告

制作性能測試計劃、調整工作分配

5.3性能測試的種類

A狹義的性能測試

B臨界測試(臨界性能、回退性能、故障測試)

C基礎設施性能測試(DB AP等)

目的:防止在後面的系統測試階段中 基礎設施出現性能問題導致返工或計劃變更。設計穿刺。

D應用程序單元性能測試

E耐久測試(拷機測試):長時間運行,系統的變化,內存、CPU、磁盤等

5.4 項目工程中考慮的性能測試

5.4.1需求定義

吞吐、響應時間、用戶並發度

指標的計算

在RFI(request for information)和RFP(request for proposal)中明確性能需求定義。

性能目標定義時的考慮事項

5.4.2項目規劃

必要的工程與人員

5.4.3【基本設計】選擇系統

確認是否有性能測量功能

5.4.4【基本設計】性能測試環境

5.4.5【基本設計】其他與性能設計相關的事項

設計時考慮:

可以從外部獲取當前隊列中滯留的請求數和線程使用數

有可以計算重要處理所需時間的機制

能獲得各個應用邏輯所需要時間的平均值、最大值、最小值

外部交互時能記錄方便排錯

在日誌中記錄個處理所需時間

制作測試計劃:

5.4.6【性能測試設計】測試計劃的細節

5.4.7【性能測試設計】人員配備與聯絡體系

5.4.8【基礎設施集成測試】基礎設施性能測試

基礎設施性能的目標的定義

性能評價體系的定義

性能測量手段的設置

性能測量

5.4.9【集成測試】多並發運行測試

5.4.10【系統測試】壓力測試、臨界測試、耐久測試

5.4.11【運維測試】性能監控測試、故障測試

5.4.12【交付】

5.4.13【運維】

5.5性能測試的課題與必要的技巧

5.5.1性能預估的能力

必須定義合適的性能需求:比如響應時間、用戶數、吞吐、回退服從率

5.5.2高效的反復實施能力

分析瓶頸、調優、報告與審核、再次測試所需的時間

5.5.3工具的使用效果

Oracle ATS使用的例子

6 虛擬化環境下性能

7 雲計算環境下性能

《圖解性能分析》學習小結