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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

ASP.NET Core 8 在 Windows 上各种部署模型的性能测试

發布時間:2023/12/24 windows 44 coder
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core 8 在 Windows 上各种部署模型的性能测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ASP.NET Core 8 在 Windows 上各種部署模型的性能測試

我們知道 Asp.net Core 在 windows 服務器上部署的方案有 4 種之多。這些部署方案對性能的影響一直以來都是靠經驗。比如如果是部署在 IIS 下,那么 In Process 會比 Out Process 快;如果是 Self Host 那么使用 HttpSys 服務器會比 Kestrel 快。
那么真實結果是否如我們想象的那樣呢?接下來就讓我們來做一次 benchmarks 吧。

托管模型

在開始 benchmark 測試之前,我們再來來介紹一下這 4 種托管模型:

1. InProcess 模式

InProcess 模式將 ASP.NET Core 應用程序直接部署在 IIS 中,與 IIS 工作進程相同的進程中運行。理論上,這種模式的性能應該相對較高,因為請求無需經過額外的進程通信。

2. OutProcess 模式

OutProcess 模式下,ASP.NET Core 應用程序在獨立于 IIS 工作進程的進程中運行。這種模式通過進程間通信與 IIS 進行通信,理論上可能引入一些性能開銷。

3. SelfHost HttpSys 模式

HttpSys 模式是一種自承載方式,利用 Windows 操作系統內核級的 HTTP 服務器。通常認為在處理大量并發連接時具有優勢,因為它與操作系統集成。

4. SelfHost Kestrel 模式

Kestrel 模式是 ASP.NET Core 的內置 Web 服務器,可以獨立運行而無需依賴其他外部服務器。Kestrel 是輕量級、跨平臺的選擇,專為處理大量并發連接而設計。

壓測平臺

  • 操作系統: Windows Server 2012 R2 Datacenter
  • 硬件配置: Intel E3 1260L CPU, 16GB 內存
  • 網絡: 家庭內網,TP-LINK 家用 1000M 交換機

因為本人沒啥高性能的服務器,家里只有一臺老舊的 HP Gen8 服務器。安裝 windows server 2012 R2 datacenter,CPU 為 E3 1260L。E3 同樣是古董,大概是 intel 10年前的產品。內存為 16G 1333 服務器專用內存。
整個測試平臺可以說是相當拉跨。湊合用用吧,反正不是彪極限性能,橫向對比的話問題不大。

壓測過程

新建一個 ASP.NET Core 默認項目。采用 VS2022 自帶的模板,使用 miniapi 對 '/' 路徑直接輸出 'Hello World!' 字符串。

using System.Diagnostics;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

var app = builder.Build();

// Configure the HTTP request pipeline.

app.MapGet("/", () =>
{
    return "Hello World!";
});

app.Run();

如果使用 HttpSys 服務器則多加一行代碼:

builder.WebHost.UseHttpSys();
  • 測試工具: 使用 Netling 進行壓力測試,模擬真實用戶請求。
  • 測試流程: 在對每個場景進行測試前先進行 60s 的預熱,等待大概 10s 再后進行 4 次持續的壓力測試(8個線程,持續30s),記錄結果(RPS)。

Benchmark 測試結果

以下是測試結果:

托管模型 Requests Per Second (RPS)
InProcess 7266
OutProcess 7960
SelfHost HttpSys 26300
SelfHost Kestrel 27199

性能分析與總結

測試結果大大的出乎了我的預料,特別是 OutProcess 模式的性能略高于 InProcess 模式,與我的認知出現了比較大的偏差。同時,SelfHost Kestrel 模式的性能優于 SelfHost HttpSys 模式,這也與一般的預期不同,因為 HttpSys 是運行在內核態的服務器。

這樣的差異可能受多種因素影響,包括硬件配置、操作系統版本、IIS的版本等,畢竟這些產品都是10年前的產物,而 ASP.NET Core8 是 2023 年的全新產品。測試結果受到多種因素的影響,大家不要較真,就圖一樂吧。

不過從結果上橫向來看,至少可以得出以下結論:

  • Self Host 比 IIS Host 性能上要快上好幾倍。在追求極限性能的場景,應該選擇 Self Host。
  • IIS Host 不管是 In Process 還是 Out Process 性能也不差。就測試平臺這種老古董也能跑個 7000+ RPS。這還不是極限,因為 7000 RPS 的時候 CPU 才到 50%+ 。如果我再多加一些線程,相信輕松可以過萬。
  • 以上最差的結果也有 7000 多的 RPS。這表明對于一般的信息系統而言,ASP.NET Core 本身的性能一般不會是瓶頸。瓶頸最早出現一定是在其他 IO 模塊,比如數據庫。

總結

以上是生活随笔為你收集整理的ASP.NET Core 8 在 Windows 上各种部署模型的性能测试的全部內容,希望文章能夠幫你解決所遇到的問題。

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