1、性能測試的流程
1、確定性能測試的目標
之前做的壓測性能標准、產品說明書的性能需求部分、運營人員提出的性能指標、通過生產環境換算出的性能指標等
(1)接口響應時間不能超過3秒(每個接口的響應時間)
(2)需要達到的tps為1000(每秒鍾處理的事物數)
(3)服務器cpu以及內存使用率小於75%
2、執行前的准備工作
(1)了解系統架構:所用到的接口服務器,應用服務器,緩存服務器,數據庫服務器等
(2)測試數據的准備:用戶數據、商品數據、訂單數據等
(3)接口調試:測試單個接口是否正常
(4)壓測工具的選擇與壓測腳本的編寫與調試
3、執行壓測以及監控各項指標
(1)執行壓測腳本:通過在被測系統上不斷增加壓力,直到被測試系統的性能滿足生產性能的要求
(2)系統服務監控:如服務器,數據庫,cpu,內存,數據庫連接數,tps, error, 平均值,90%百分位,等是否滿足性能指標要求
搭建監控軟件或平台,可點擊
-> 性能監控 <-
合集進行查閱,總有一款適合你
4、性能調優
(1)參與人員:測試、開發、運維、DBA等
(2)基於上一步的監控數據,對性能頻頸進行定位、分析,優化
5、性能回歸測試
(1)再次執行壓測腳本
(2)系統服務監控數據收集
(3)監控數據分析,直到滿足性能指標;如不滿足則再次進行調優,之后性能回歸測試執行
6、編寫測試報告
(1)壓測概要,涉及到的測試工具,各種指標的介紹
(2)壓測服務器信息,cpu,內存,操作系統,用途
(3)壓測目的,是否達到性能要求
(4)壓測方案,不斷對系統施加壓力,直到滿足性能的要求
(5)壓測結果
注意點:
(1)測試執行時,執行多次,取平均結果更為准確
(2)單機並發不夠時,采用多機分布式並發,多機分布式不夠采用阿里雲等進行壓測
(3)測試過程,一定要盡可能模擬實際應用場景
2、性能的優化
優化總結(參考)
1、架構的升級(增加reads緩存)
(1)注冊接口:獲取卡號后,暫存緩存服務器,並進入MQ隊列,MQ隊列取出后,保存數據庫
(2)查詢接口:原來讀取的mysql數據庫,改成讀取的redis(緩存)
2、開發代碼
(1)代碼的邏輯優化
(2)接口返回值的優化,刪除多余的返回字段
3、數據庫
(1)SQL優化(加索引),查詢方式
(2)SQL語句優化
4、硬件配置
(1)增加服務器、數據庫cpu
(2)橫向擴展增加服務器
5、服務器的部署
(1)資源的分配:把接口服務器上部署的應用挪到其他服務器
(2)根據服務器提供的服務類型不同,分為文件服務器、數據庫服務器、應用程序服務器、WEB服務器等
6、服務器負載不均衡
(1)由原來的的擇優分配機制改成輪詢方式
(2)選擇一台最優的服務器鏡像拷貝到其他服務器,保證每台服務器對應的程序以及部署都是一樣的
7、日志級別
(1)減少了日志量由原來的info改成error(日志級別越低輸出的日志內容就越多,對系統性能影響很大)
(2)異步輸出比同步輸出性能高
3、性能測試關注的指標
1、服務器、數據庫等,cpu、內存的使用率,磁盤I/O,網絡帶寬
2、並發用戶數,在線用戶數,
3、每個接口響應時間,平均響應時間
4、吞吐量:tps
5、事務成功率,超時錯誤率