最近工做之餘,對以往的性能測試相關知識作了整理和覆盤,發現了不少以前沒認真思考過的小細節,整理出來,以供參考。。。數據庫
一、如何理解性能指標?緩存
在性能測試中,涉及的性能指標有不少,強行記憶理解多是一件很吃力的事情。對性能指標進行分層劃分,這樣有助於記憶和理解。服務器
在體育運動中,咱們都知道提倡「更高、更快、更強」,其實對於系統的性能,咱們也能夠這麼理解,大概分層以下:網絡
分層 | 說明 |
更高 | 資源:CPU%、Memery%、I/O |
更快 | 速度:TPS、RT/ART |
更強 | 容量、PV、Hit |
二、層層分析性能瓶頸架構
軟件應用是一個很複雜的東西,影響性能表現的因素更多,直接影響OR間接影響,在分析過程當中都是須要注意的。下面是一些比較經常使用的分析方法:併發
①、分層梳理負載均衡
梳理層次 | 舉例說明 |
業務梳理 | 業務配比、依賴關係角度 |
數據梳理 | 真實數據統計準確性、測試數據失效過時、數據污染 |
架構梳理 | 緩存、集羣、負載均衡、分佈式、微服務、異步通訊、網關 |
參數梳理 | 最大鏈接數、最大線程數、JVM內存分配、timeout、異常/失敗重試次數 |
場景梳理 | 異常場景、容量場景、基準場景、併發場景、穩定性場景、多節點場景、容災恢復場景 |
②、模塊梳理異步
組成模塊 | 舉例說明 |
負載機 | 高併發下,負載機可能成爲限制性能提高的瓶頸 |
網絡 | 高吞吐量下,網絡帶寬的不足會成爲性能提高的瓶頸 |
中間件 | 緩存策略、代理分發策略、服務通訊策略 |
服務器 | CPU、Memory |
數據庫 | 索引、鎖、分庫分表、視圖、實例等 |
操做系統 | 文件I/O、buffer、cached等 |
三、性能測試的方法論分佈式
①、性能測試場景必定要基於真實環境來模擬;微服務
②、性能測試場景必定要基於具體清晰的指標來構建;
③、場景建模是分析的結果,性能需求分析是場景建模的前提;
④、開展性能測試以前,要設定統一的目標、分析方法、條理分明的流程以及高度的團隊協做和任務分配;
⑤、性能測試,執行監控分析是核心;
四、何時須要關聯
①、服務端value動態返回;
②、數據在後續執行中須要引用;
③、業務場景有先後依賴關係;
五、如何理解ThinkTime?
①、要不要添加ThinkTime?
②、何時用到ThinkTime?
③、用ThinkTime會有什麼效果?
④、ThinkTime是否匹配真實業務場景?
⑤、ThinkTime是否會影響到服務器資源?
六、你真的瞭解測試目的麼?
①、在什麼環境/條件下執行測試?(硬件配置、軟件版本/參數、測試環境)
②、被測試的系統業務場景是什麼?是否要剔除沒必要要的業務?
③、若是保證數據的真實性、有效性?如何避免數據污染帶來的影響?
④、測試策略真的符合預期的目的麼?
⑤、系統的性能表現真的符合實際的生產場景麼?如何量化?
以上就是一些最近思考整理的問題,僅供參考,後續若有新的思考點,會更新,就醬。。。