通過jmeter壓測surging

2022-07-18 06:01:59

前言

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 命令進行執行,執行成功之後,通過瀏覽器是否可存取

 

設定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 後續會提供平臺視覺化,以下是部分模組