前一段時間,公司做了壓測的技術分享,感覺收穫很多,於是將其中的核心內容進行總結整理,有不妥之處望多多指正!
不過在網上搜尋壓力測試,多半會出現這樣的圖,莫名笑哭
目錄
什麼是壓力測試?
壓力測試的目的
一、壓力測試優化原則
三個要三個不要
二、壓力測試優化策略
1.時空轉換:空間換時間、時間換空間
2.並行/非同步操作:並行操作、非同步操作
3.預先/延後處理:預先/提前處理、延後/惰性處理
4.快取/批量合併:快取資料和結果、合併和批處理
5.演算法設計和資料結構:更快的演算法設計,更優化的資料結構
(軟體)壓力測試就是對系統不斷施壓,從而確定乙個系統的瓶頸或者不能接收的效能點。
壓測的目的是為了觀察當前系統的負載能!壓測的結果一般情況可以通過吞吐量與併發數的比例來觀察,吞吐量與併發數呈正相關關係,同時,在不同場景下的壓測方案和技巧也是不一樣的。尤其在銀行某些特色場景下,壓力測試的方案也具有一定的場景特色。
壓力測試優化原則總結起來就是:三個不要三個要
1.要查最大效能瓶頸 找到
最大的效能瓶頸,解決後,這個系統的效能會得到最大的提公升。
2.確診問題根因
確定了最大的效能瓶頸後,就需要對這一效能瓶頸做徹底分析,找出資源不夠使用的原因 3.
考慮多種情況
找多個解決方案,分析不同
方案的優缺點,再找出最好的解決方案
1.不要
過度反常態優化
追求最合適的價效比,
在滿足要求的情況下,盡量不要做過度優化,過度優化會增加系統複雜度和維護成本
2.不要
過早不成熟優化
過早的優化可能優化錯地方,優化的功能可能後續不再使用。
3.不要
表面的膚淺優化
優化忌諱表面優化,如果對乙個程式和服務沒有全域性的把握,沒有理解底層執行機制,任何優化方案都很難達到最好的效果
1.1 空間換時間的策略
出發點是有些場景時間和速度更重要,這時就可以考慮用空間來換時間。 優化場景和方法:
1.2 時間換空間的策略
出發點是記憶體和儲存這樣的「空間」資源,有時會成為稀缺資源要儘量減少占用的 空間。 此時
採用內部排序不可取,最好是需要外部排序,因為面對大量使用者時,不會考慮極耗記憶體的內排。優化場景和方法:
2.1 並行操作策略
對於資源充沛的情況下對於無狀態任務可以通過並行處理提高處理效率。因為
一般情況下,如果介面採用順序呼叫,則耗時,客體驗很差。
優化場景和方法:
2.2 非同步操作策略
非同步操作指函式馬上返回,等有了資料結果後再通知函式,那麼這就是非同步。 優化場景和方法:
3.1 預先/提前處理策略,主要用於優化那些需要極致使用者體驗,聯機交易實時響應特別高的場景,例如融 資授信場景,如果要做到秒批,那必須要提前通過批量的形式對使用者做預授信。
(有些銀行目前未作預授信,只有使用者申請後才能跑資訊,主要是考慮成本,只有將使用者資訊全部錄入,才開始跑模型)
優化場景和方法:
3.2 延後/惰性處理策略
主要針對那些操作比較耗時,但是對聯機業務又無明顯影響的交易可以進行此類 優化,此類優化類似於分布式base理論。 優化場景和方法:
4.1 快取資料策略
在效能優化下使用非常頻繁,cpu、記憶體、檔案系統、儲存、內容發布、資料庫等都 會用到快取策略。 優化場景和方法:
4.2 批量合併處理策略
網路io、磁碟io比較多的情況下合併操作和批量操作能大幅提公升吞吐量,提高效能。優化場景和方法:
5.1 先進的演算法策略
對於一些使用頻率高的業務場景,可以通過更先進高效的演算法進行優化。
5.2 高效的資料結構
沒有乙個資料結構是在所有情況下都是最好的,不同的基礎資料結構在新增元素、 刪除元素、查詢元素、遍歷耗時等,要權衡利弊,找出最適合的高效的資料結構。這個也要和業務場景關聯起來,不同資料結構在不同場景有不同的長處。
vue技術入門篇
1.目錄結構 build webpack構建命令目錄,包括執行開發環境,專案打包等配置 config webpack和node基礎,開發,線上環境的配置 dist webpack打包後生成的靜態檔案目錄 node modules 專案依賴的js包 src 專案根目錄 assets 靜態資源目錄,這裡...
介面測試入門篇
1 什麼是介面?介面是連線前台和後台的橋梁,前台通過介面呼叫後端已完成的功能,而無需關注內部的實現細節。借助於介面,可以實現前後臺分離,各自完成開發工作後,進行聯調,提高工作效率。2 介面的分類?get,post,put,delete 3 介面的區別?get與post的區別 答 get的請求資料是在...
效能測試之入門篇
最近在學習效能測試相關的知識,為了更加系統的來學習,特此從最基礎的講起,保證各位廣大看的明白,後續會不斷的記錄並產出類似的知識帖子 這些效能指標後面內容會細講 負載測試 逐步增加併發使用者數,發起請求,找到系統的拐點區間壓力測試 通過一定的併發使用者數,持續比較長的時間請求,檢視伺服器的穩定性 舉個...