日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

使用BeetleX.NetBenchmark压测TCP,HTTP和Websocket服务

發布時間:2023/12/4 asp.net 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用BeetleX.NetBenchmark压测TCP,HTTP和Websocket服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

真沒想到大過年還在家里寫代碼寫文章,本來還打算自駕半個月沒想出現這情況。在這里祝福全國同胞在新的一年里身體健康!希望陽光天氣早日照射在這片土地上,給人帶來新一年的希望!

NetBenchmark是針對網絡服務壓測的開源組件,組件提供TCP,HTTP和Websocket的壓力測試基礎功能;為了更好的符合業務需求組件不提供UI配置信息源的方式(畢竟這種方式只能作有限制測試),而是由使用者來自己制定相應的邏輯代碼來進行具體的業務測試。組件基于netstandard2.0,除了可以在.NET CORE上運行外還可以在.NET FX接下來介紹一下組的使用。

引用組件

https://www.nuget.org/packages/BeetleX.NetBenchmark/

Github:?https://github.com/IKende/NetBenchmark

TCP測試

組件通過Benchmark.Tcp方法來構建一個TCP測壓實例,方法如下:

public static Runner Tcp<Packet, Token>(string host, int port, int connections,Func<BeetleX.Clients.AwaiterClient, Token, Task> handler)where Packet : BeetleX.Clients.IClientPacket, new()where Token : new()

方法帶兩個泛參

  • Packet

    協議分析器,實現BeetleX.Clients.IClientPacket.

  • Token

    測試關聯對象,可以根據業務制定相關對象數據狀態屬性。

參數

  • host

    主機地址

  • port

    服務端口

  • connectins

    并發測試的連接數

  • handler

    測試方法Func<BeetleX.Clients.AwaiterClient, Token, Task>,每次調用的測試邏輯。

構建TCP測試實例

class Program{static void Main(string[] args){var data = StringPacket.RamdomString(512);var runer = Benchmark.Tcp<StringPacket, Program>("192.168.2.19", 9090, 200,async (tcp, token) =>{tcp.Send(data);await tcp.Receive();});runer.Run();runer.Print();}}

以上定義了一個基于StringPacket自定義協議測試,它是以4字節頭大小來描述消息長的字符協議解釋器。tcp.Send是向服務器發送一個消息,而await tcp.Receive則等待服務器響應。

測試結果

可以通過runer.Print()方法實時把結果輸出控制臺,信息里包括:正確,錯誤和相關網絡并發情況,在最下面輸出不同延時響應的百分比。

HTTP測試

組件通過Benchmark.Http方法來構建一個HTTP測壓實例,方法如下:

public static Runner Http<Token>(Uri host, int connections, Func<IHttpHandler, Token, Task> handler)where Token : new()

方法帶一個泛參

  • Token

    測試關聯對象,可以根據業務制定相關對象數據狀態屬性。

參數

  • host

    測試的服務地址

  • connections

    并發測試的連接數

  • handler

    測試方法Func<IHttpHandler, Token, Task>,每次調用的測試邏輯。

IHttpHandler

提供了一些簡單的http調用方法

Task Get(string url, Dictionary<string, string> queryString = null);Task Get(string url, Dictionary<string, string> queryString, Dictionary<string, string> header = null);Task Post(string url, Dictionary<string, string> queryString, Dictionary<string, string> heaer, Dictionary<string, string> data);Task Post(string url, Dictionary<string, string> data);Task PostJson(string url, Dictionary<string, string> queryString, Dictionary<string, string> heaer, object data);Task PostJson(string url,object data);

構建HTTP測試實例

class Program{static void Main(string[] args){var runer = Benchmark.Http<Program>(new Uri("http://192.168.2.19:5000"), 100,async (http, token) =>{await http.Get("/api/values");await http.PostJson("/api/values", "beetlex.io");});runer.Run();runer.Print();}}

測試結果

websocket測試

組件通過Benchmark.Websocketxxx方法來構建一個websocket測壓實例,方式有三種分別是DataFrame,Text和Json,方法如下:

public static Runner Websocket<Token>(Uri host, int connections, Func<WSClient, Token, Task> handler)where Token : new() public static Runner WebsocketText<Token>(Uri host, int connections, Func<TextClient, Token, Task> handler)where Token : new() public static Runner WebsocketJson<Token>(Uri host, int connections, Func<JsonClient, Token, Task> handler)where Token : new()

構建Websocket測試實例

class Program{static void Main(string[] args){var runer = Benchmark.WebsocketJson<Program>(new Uri("ws://192.168.2.19:8080"), 100,async (ws, token) =>{ws.TimeOut = 1000 * 5;ws.Send(new { url = "/json" });var result = await ws.Receive();});runer.Run();runer.Print();}}

測試結果

總結

以上是生活随笔為你收集整理的使用BeetleX.NetBenchmark压测TCP,HTTP和Websocket服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。