日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Mall商城的高级篇的开发(二)性能压测和性能监控

發(fā)布時間:2024/3/26 77 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mall商城的高级篇的开发(二)性能压测和性能监控 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Mall商城的高級篇的開發(fā)(二)

性能壓測–壓力測試

壓力測試考察當前軟件硬件環(huán)境下系統(tǒng)所能承受的最大負荷并幫助找出系統(tǒng)的瓶頸所在。壓測都是為了系統(tǒng)在上線的處理能力和穩(wěn)定性維持在一個標準的范圍內(nèi),做到心中有數(shù)。

使用壓力測試,我們有希望找到很多種用其他測試方法很難發(fā)現(xiàn)更多的錯誤。有兩種錯誤類型是:內(nèi)存泄露、并發(fā)與同步。

有效的壓力測試系統(tǒng)將應用在一下這些關鍵條件:重復、并發(fā)、量級、隨機變化

性能指標

性能指標是來整體把握整個系統(tǒng)的狀況。

  • 響應時間(Response Time:RT):響應時間指用戶從客戶端發(fā)起一個請求開始,到客戶端接受到從服務器端返回的響應結(jié)束,整個過程所耗費的時間。
  • HPS(Hits Per Second),每秒點擊次數(shù),單位是次/秒。
  • TPS(Transaction per Second),系統(tǒng)每秒處理交易數(shù),單位是筆/秒。
  • QPS(Query per Second):系統(tǒng)每秒處理的查詢數(shù),單位是次/秒。對于互聯(lián)網(wǎng)的業(yè)務中,如果某些業(yè)務有且僅有一個請求連接,那么TPS=QPS=HPS,一般情況下用TPS來衡量整個業(yè)務的流程,用QPS來衡量接口查詢次數(shù),用HPS來表示對服務器的單擊請求。
  • 無論TPS、QPS、HPS,此指標是衡量系統(tǒng)處理能力非常重要的指標,越大越好,根據(jù)經(jīng)驗,一般情況下:
    • 金融行業(yè):1000TPS~50000TPS,不包括互聯(lián)網(wǎng)化的活動
    • 保險行業(yè):100TPS~100000TPS,不包括互聯(lián)網(wǎng)的活動
    • 制造行業(yè):10TPS~5000TPS
    • 互聯(lián)網(wǎng)電子商務:10000TPS~10000000TPS
  • 最大響應時間(Max Response Time)指用戶發(fā)出請求或者指令到系統(tǒng)作出反應(響應)的最大時間。
  • 最少響應的時間(Mininum Response Time)指用戶發(fā)出請求或者指令到系統(tǒng)作出反應(響應)的最少時間
  • 90%響應時間(90% Response Time)是指所有用戶的響應時間進行排序,第90%響應時間
  • 從外部看,性能測試主要關注如下的指標
    • 吞吐量:每秒鐘系統(tǒng)能處理的請求數(shù)、任務數(shù)
    • 響應時間;服務處理一個請求或一個任務的耗時
    • 錯誤率:一批請求結(jié)果中出錯的請求所占的比例。

JMeter

安裝

官方下載地址:Apache JMeter - Download Apache JMeter

啟動命令。

JMeter壓測示例

  • 編寫測試計劃。
  • 添加用戶線程組。并配置用戶線程組的屬性。
  • 給線程組添加配置元件中的HTTP請求默認值。并配置屬性。
  • [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kukZVrjB-1652189323113)(/Users/wanglufei/Library/Application Support/typora-user-images/image-20220407152653269.png)]

  • 給線程組添加取樣器中的HTTP請求。并配置屬性。因為我們在第三步,已經(jīng)配置過了,這個就不用配置。
  • 配置返回的結(jié)果。一個是查看結(jié)果樹、一個是聚合報告、用表格查看結(jié)果。
  • 啟動測試。
  • 壓測我們的首頁

    壓測步驟

  • 添加用戶線程,模擬用戶發(fā)起請求
  • 配置HTTP請求
  • 生成結(jié)果報告
  • 壓測結(jié)果截圖

  • 匯總報告
  • 聚合報告
  • 查看結(jié)果樹
  • 匯總圖
  • 影響性能的考慮點

    數(shù)據(jù)庫、應用程序、中間件(tomcat、nginx)、網(wǎng)絡和操作系統(tǒng)等方面

    優(yōu)化的點:應該考慮自己的應用場景屬于CPU密集型還是IO密集型

    性能監(jiān)控

    JVM內(nèi)存模型

    JVM的相關筆記:JVM_BearBrick0的博客-CSDN博客

    在堆內(nèi)存中,存在幾乎90%的對象實例,所有的對象實例以及數(shù)組都要在堆上分配。堆是垃圾收集器管理的主要區(qū)域,也被稱為GC堆;也是我們優(yōu)化考慮最多的地方。

    堆的劃分可以參考上面提出的相關筆記。

    堆的一次性完成GC的流程:

    后面會總結(jié)完成的GC流程,先立個Flag。

    在做壓力測試期間,我們應該對堆中內(nèi)存來進行監(jiān)控,包括CPU線程等指標。

    JConsole與JVisualvm

    JDK的兩個小工具JConsole、JVisualvm(升級版的Jconsole),通過命令行啟動,可監(jiān)控本地和遠程應用。遠程應用需要配置

    JConsole

    在命令行使用Jconsole,命令便可彈出控制面板:

    找到我們的Product服務

  • 概覽圖
  • 內(nèi)存使用率的圖
  • Jvisualvm

    可以監(jiān)控內(nèi)存泄漏,跟蹤垃圾回收,執(zhí)行時內(nèi)存、CPU分析、線程分析…

    使用JMeter做壓力測試,并做性能監(jiān)控

    整個項目的訪問流程圖

    測試我們的中間件Nginx

    編寫測試計劃,和上面的步驟相差不大,需要注意的是需要配置自己Nginx的IP地址。

    監(jiān)控Nginx的狀態(tài)

    docker stats

    測試結(jié)果:

    出現(xiàn)的異常

    結(jié)果報告

    測試我們的網(wǎng)關服務Gateway

    接口的壓力測試步驟和上面類似,這里監(jiān)控CPU和內(nèi)存的使用情況我們使用visualvm:

    這里主要監(jiān)控CPU和內(nèi)存的使用情況

    編寫簡單服務測試

    @GetMapping("/hello") @ResponseBody public String hello() {return "hello"; }

    壓測的數(shù)據(jù)表格

    壓測內(nèi)容壓測線程數(shù)吞吐量/s90%響應時間百分比99%響應時間百分比
    Nginx50 一直循環(huán)2599837
    Gateway50 一直循環(huán)2782328
    測試簡單服務50 一直循環(huán)3851326
    Gateway+簡單服務50 一直循環(huán)12693557
    全鏈路50 一直循環(huán)100868321
    首頁渲染一級菜單50 一直循環(huán)264(db、thymeleaf)90234
    三級分類的數(shù)據(jù)獲取50 一直循環(huán)27(db、thymeleaf)25233295
    首頁全量數(shù)據(jù)的獲取50 一直循環(huán)2(靜態(tài)資源)、(優(yōu)化之后)1938881429
    首頁渲染(開啟緩存、優(yōu)化數(shù)據(jù)庫(給字段加索引)、降級日志的界別)50 一直循環(huán)2803881547
    三級分類的數(shù)據(jù)獲取(優(yōu)化查詢的業(yè)務邏輯)50 一直循環(huán)467219335

    根據(jù)數(shù)據(jù)可以看出,我們應該優(yōu)化的一個方向:

    • 中間件越多,性能損失越大,大多數(shù)的原因都是由于網(wǎng)絡之間的耗時
    • 業(yè)務
      • 模版引擎的渲染速度(緩存的開啟)
      • db(Mysql的優(yōu)化)
        • 給字段建立普通索引
      • 靜態(tài)資源

    JVM分析和調(diào)優(yōu)

    結(jié)合JvisualVm來給伊甸園和老年代分配合理的內(nèi)存空間,主要目的是來減少Yong GC和Full Gc所帶來的時間的消耗。

    Nginx的動靜分離

    為了減少Tomcat的壓力,將靜態(tài)的配置文件都放到Nginx服務器中。來增加整體項目的

    整體的效果圖:

    流程圖:

    效果圖:

    操作流程

  • 將靜態(tài)的文件移動到Nginx的服務器
  • 配置Nginx的響應的配置文件
  • 模擬線上應用內(nèi)存奔潰宕機

    由于我們將靜態(tài)的文件都分配到了Nginx服務器中,而Tomcat只接受我們動態(tài)的請求,也就是做了動靜分離的效果,我們來看看吞吐量有沒有提升。

    同時為了測試線上的真實效果,我們選擇打開thymelead的緩存。

    總結(jié)

    以上是生活随笔為你收集整理的Mall商城的高级篇的开发(二)性能压测和性能监控的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。