通過jmeter壓測surging

来源:https://www.cnblogs.com/fanliang11/archive/2022/07/17/16488905.html
-Advertisement-
Play Games

有時為了確保數據存儲的唯一性,會選擇數據結構中的字典,但往往在存儲數據之後會對數據進行一系列的操作,比如排序等等,但字典在數據結構中是通過鍵值對進行存儲的,這時我們可以通過將字典轉換成對應的數組或動態數組進行排序,再通過排序後的鍵獲得字典中的值便可獲得想要的數據了。 引用的空間 using Syst ...


前言

surging是異構微服務引擎,提供了模塊化RPC請求通道,引擎在RPC服務治理基礎之上還提供了各種協議,並且還提供了stage組件,以便針對於網關的訪問, 相對於功能,可能大家更想知道能承受多大的併發,大家也會各自進行壓測,當碰上一些問題,導致壓測結果不理想就會扣帽子給框架引擎,這個性能不行,那麼上一個帖子回應了@wen-wen 所貼的壓測報告,針對於壓測結果,很多人不明所以,都是以一筆帶過的方式告訴大家結果,那麼這次從頭至尾,把環境和測試過程進行梳理,通過此篇文章進行發佈,也請各大同行監督。

環境

處理:Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz   2.20 GHz

記憶體:16.0 GB

語言:.NET 6.0

下載配置源碼

1.通過surging 下載最新的源碼, 下載完之後,選擇測試ManagerService 模塊服務中的Say服務,而測試的代碼也比較簡單,就是返回一字元串,代碼如下

     public async Task<string> Say(string name)
        {
            return await Task.FromResult($"{name}: say hello");
        }

2. 把日誌級別提高,因為這會影響性能,比如設置的info 就要比error 級別低三倍,以測試的日誌配置為例,測試使用的是NLog, 在Nlog.config 下把coloredConsole改成error級別,代碼如下

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <targets>
    <target name="coloredConsole" xsi:type="ColoredConsole" useDefaultRowHighlightingRules="false"
    layout="${longdate}|${pad:padding=5:inner=${level:uppercase=true}}|${message}" >
      <highlight-row condition="level == LogLevel.Debug" foregroundColor="DarkGray" />
      <highlight-row condition="level == LogLevel.Info" foregroundColor="Gray" />
      <highlight-row condition="level == LogLevel.Warn" foregroundColor="Yellow" />
      <highlight-row condition="level == LogLevel.Error" foregroundColor="Red" />
      <highlight-row condition="level == LogLevel.Fatal" foregroundColor="Red" backgroundColor="White" />
    </target>
    <target name="file" xsi:type="File"
            archiveAboveSize="10240"
        layout="${date}|${level:uppercase=true}|${message} ${exception}|${logger}|${all-event-properties}"
        fileName="c:\surging1\${level}\_${shortdate}.log" />
  </targets>
  <rules>
    <logger name="*" minlevel="error" writeTo="file" />
    <logger name="*" minlevel="error" writeTo="coloredConsole" />
  </rules>
</nlog>

3. release類型下 發佈server,之後通過dotnet  Surging.Services.Server.dll 命令進行運行,運行成功之後,通過瀏覽器是否可訪問

JMeter和JDK下載

1、JMeter下載地址:http://jmeter.apache.org/download_jmeter.cgi

2、JDK下載地址:https://www.oracle.com/technetwork/cn/java/javase/downloads/index.html

 

 

JDK+Jmeter安裝

1、windows安裝(以win 7為例)

1、 安裝jdk、配置java環境變數(步驟略)

2、 解壓apache-jmeter-2.13.zip到D盤

3、 桌面選擇“電腦”(右鍵)--高級系統設置--環境變數

 4、 在”系統變數“---”新建“,在變數名中輸入:JMETER_HOME,變數值中輸入:D:\apache-jmeter-2.13

 5、 修改CLASSPATH變數,變數值中添加 %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar; 再點確定。

6、 進入到D:\apache-jmeter-5\bin下運行jmeter.bat即可打開JMeter

 Jmeter非GUI運行壓測

創建配置jmx 文件

1. 新增Thread Group

 

配置thread group的user thread為2000

 

 

 

 2. 在thread group 下新增Http Request

 

 

配置Http Request,壓測介面為http://localhost:281/api/manager/say?name=fanly,記得勾上Use KeepAlive

 

3.  然後點擊save as 達到D:\

 4.運行jmeter 控制台進行壓測,代碼如下

jmeter -n -t D:\HTTP.jmx -l D:\read.csv -e -o D:\ResultReport

5. 運行結果如下

 

以上看不懂,可以把生成的read.csv 載入到jmeter 生成報告進行查看,如下圖

 

 

 

 從以上圖可以看出surging 的http 壓測的吞吐量是12589/s

結尾

也歡迎同行,粉絲,客戶們可以按照以上的配置方式進行壓測,也提醒各位不要開啟info 級別日誌,因為這會造成性能上大幅降低,壓測只有4000/s ,只有error 級別差不多1/6 ,也透露下surging 後續會提供平臺可視化,以下是部分模塊

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 設計協議 相對於 HTTP 的用處,RPC 更多的是負責應用間的通信,所以性能要求相對更高。但 HTTP 協議的數據包大小相對請求數據本身要大很多,又需要加入很多無用的內容,比如換行符號、回車符等; 還有一個更重要的原因是,HTTP 協議屬於無狀態協議,客戶端無法對請求和響應進行關聯,每次請求都需要 ...
  • JVM線程屬於用戶態還是內核態 當進程運行在ring3級別時為用戶態,ring0級別時為內核態 有些操作需要有內核許可權才能進行,那麼有三種由用戶態切換到內核態的情況: 系統調用:操作系統封裝內核指令,統一管理硬體資源,然後向用戶程式提供系統服務,用戶程式進行系統調用,操作系統進行檢查確保全全然後再進 ...
  • 1.簡單介紹java起源: 1995年,詹姆斯-高斯林在sun公司開發出java編程語言.到2010年,sun公司被Oracle公司收購,而詹姆斯-高斯林也離開了Oracle公司.所以,如今想要安轉jdk,需要到Oracle官網下載. 2.jdk的安裝以及環境變數的配置 2.1jdk的下載: 前面提 ...
  • 看《C++ Primer Plus》時整理的學習筆記,部分內容完全摘抄自《C++ Primer Plus》(第6版)中文版,Stephen Prata 著,張海龍 袁國忠譯。只做學習記錄用途。 ...
  • 上一篇文章講到了標簽在 parseDefaultElement 方法中進行解析,本篇文章將講解這部分內容 bean 標簽解析 查看 processBeanDefinition 方法,針對各個操作作具體分析: protected void processBeanDefinition(Element e ...
  • 不要在foreach迴圈里進行元素的remove/add操作。 remove元素請使用Iterator方式,如果併發操作,需要對Iterator對象加鎖。 正例 List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); ...
  • 米哈游2023秋季招聘正式開始~ [燈泡]簡歷投遞:7.4-10.31 提前批: 7.22號之前投遞部分崗位有機會免筆試 筆試:7月-10月 面試:7月中旬開始 [燈泡] 成功密碼 內推碼拿好,沖! 校招唯一專屬內推碼EYTUC。 校招崗位鏈接:https://taou.cn/2piRI 選擇好崗位 ...
  • 1.過濾器 1.為什麼要使用過濾器 在Web開發中,常常會有這樣的需求:在所有介面中去除用戶輸入的非法字元,以防止引起業務異常。要實現這個功能,可以有很多方法,如: 在前端參數傳入時進行校驗,先過濾掉非法字元,然後,返回用戶界面提示用戶重新輸入。 後端接收前端沒有過濾的數據,然後過濾非法字元。 利用 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...