cd ApiPerformanceTest

最小 GET API

使用帶有路由的最小 API 創建簡單的 GET 方法/factorial

app.MapGet("/factorial", (int n) =>  
{
long Factorial(int number)
{
return number <= 1 ? 1 : number * Factorial(number - 1);
}

long result = Factorial(n);
return result;
})
.WithName("GetFactorial")
.WithOpenApi();

并使用以下命令運行 API

dotnet run

API 將可以訪問,其中檢查 for defined in 和 是我們將為其計算階乘的數字。http://localhost:{portNo}/Factorial/{n}portNo lauchSettings.jsonn

其次,讓我們在 Python 中創建一個類似的 GET 方法

使用以下命令安裝 FastAPI 和 Uvicorn

pip install fastapi uvicorn

創建包含以下內容的文件。main.py

from fastapi import FastAPI  

app = FastAPI()

def factorial(n: int) -> int:
return 1 if n <= 1 else n * factorial(n - 1)

@app.get("/factorial/{n}")
def get_factorial(n: int):
result = factorial(n)
return {"factorial": result}

用于運行 FastAPI 服務器。uvicorn

uvicorn main:app --reload

API 將在 where is 我們將為其計算階乘的數字進行訪問。http://127.0.0.1:8000/factorial/{n}n

性能比較

ApacheBench (ab) 通常用于 Web 服務器、API 和應用程序的性能基準測試。

安裝

sudo apt-get install apache2-utils

用法

確保兩個應用程序服務器都可以在定義的端口號處訪問,并且應該已經啟動并運行,沒有任何錯誤。

ab -n 1000 -c 10 http://localhost:5030/factorial?n=10  
ab -n 1000 -c 10 http://127.0.0.1:8000/factorial/10

.Net 結果

通過在本地調用在 5030 上運行的 .Net API 從 Apache Bench 返回的性能結果。

cmd > ab -n 1000 -c 10 http://localhost:5030/factorial?n=10
This is ApacheBench, Version 2.3 <$Revision: 1903618 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software: Kestrel
Server Hostname: localhost
Server Port: 5030

Document Path: /factorial?n=10
Document Length: 7 bytes

Concurrency Level: 10
Time taken for tests: 0.184 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 146000 bytes
HTML transferred: 7000 bytes
Requests per second: 5439.01 [#/sec] (mean)
Time per request: 1.839 [ms] (mean)
Time per request: 0.184 [ms] (mean, across all concurrent requests)
Transfer rate: 775.48 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 5
Processing: 0 2 0.9 2 9
Waiting: 0 1 0.9 1 8
Total: 0 2 0.9 2 9

Percentage of the requests served within a certain time (ms)
50% 2
66% 2
75% 2
80% 2
90% 2
95% 3
98% 5
99% 6
100% 9 (longest request)

Python 結果

通過在本地調用在 8000 上運行的 Python API 從 Apache Bench 返回的性能結果。

cmd > ab -n 1000 -c 10 http://127.0.0.1:8000/factorial/10
This is ApacheBench, Version 2.3 <$Revision: 1903618 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software: uvicorn
Server Hostname: 127.0.0.1
Server Port: 8000

Document Path: /factorial/10
Document Length: 21 bytes

Concurrency Level: 10
Time taken for tests: 0.766 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 165000 bytes
HTML transferred: 21000 bytes
Requests per second: 1305.69 [#/sec] (mean)
Time per request: 7.659 [ms] (mean)
Time per request: 0.766 [ms] (mean, across all concurrent requests)
Transfer rate: 210.39 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 2
Processing: 3 7 3.6 7 41
Waiting: 2 6 3.5 6 41
Total: 3 8 3.6 7 41

Percentage of the requests served within a certain time (ms)
50% 7
66% 8
75% 8
80% 8
90% 9
95% 9
98% 11
99% 38
100% 41 (longest request)

比較

C#(帶有 Kestrel 的 .NET Core)

Python(FastAPI 與 Uvicorn)

主要觀察

每秒請求數

每個請求的時間

傳輸速率

連接時間

一致性

簡單負載測試

在高負載下測量吞吐量和響應時間,同時提高并發性。

// For .Net  
ab -n 10000 -c 100 http://127.0.0.1:5219/factorial?n=10

// For Python
ab -n 10000 -c 100 http://127.0.0.1:8000/factorial?n=10

下表比較了 .NET (Kestrel) 和 Python (Uvicorn) 之間的基準測試結果

延遲測試

評估單個請求的響應時間以評估延遲。

// For .Net  
ab -n 1000 -c 1 http://127.0.0.1:5219/factorial?n=10

// For Python
ab -n 1000 -c 1 http://127.0.0.1:8000/factorial?n=10

下表比較了 .NET (Kestrel) 和 Python (Uvicorn) 之間的基準測試結果

故障率測試

檢查在中等負載下有多少個請求失敗。

// For .Net  
ab -n 10000 -c 10 http://127.0.0.1:5219/factorial?n=10

// For Python
ab -n 10000 -c 10 http://127.0.0.1:8000/factorial?n=10

下表比較了 .NET (Kestrel) 和 Python (Uvicorn) 之間的延遲測試結果,對 10000 個請求使用并發級別 10

長連接測試

使用持久連接時測量性能。

// For .Net  
ab -n 10000 -c 10 -H "Connection: Keep-Alive" http://127.0.0.1:5219/factorial?n=10

// For Python
ab -n 10000 -c 10 -H "Connection: Keep-Alive" http://127.0.0.1:8000/factorial?n=10

以下是 Kestrel 和 Uvicorn 服務器在用于 10000 個并發級別為 10 的請求時的比較Keep-Alive

壓力測試

評估極端條件下的服務器限制和行為。

// For .Net  
ab -n 50000 -c 200 http://127.0.0.1:5219/factorial?n=10

// For Python
ab -n 50000 -c 200 http://127.0.0.1:8000/factorial?n=10

這是 Kestrel (.NET) 和 Uvicorn (FastAPI) 之間的性能比較,它們的負載要高得多,為 50,000 個請求和 200 個并發連接

在本次基準測試中**,帶有 Kestrel 的 C#** 的性能明顯優于帶有 FastAPI 和 Uvicorn 的 Python

對于高性能應用程序,尤其是在處理大量并發請求時,C#?在此方案中提供更好的性能。

文章轉自微信公眾號@DotNet NB

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
返回頂部
上一篇
使用 Hasura 構建高級 API 策略
下一篇
淺談LLM時代下的REST?API自動化測試
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
日韩欧美成人一区| 欧美三电影在线| 偷窥少妇高潮呻吟av久久免费| 国产精品一级在线| 亚洲色图欧美偷拍| 日韩区在线观看| 99re6这里只有精品视频在线观看| 国产婷婷色一区二区三区在线| 国产传媒久久文化传媒| 另类人妖一区二区av| 中文字幕一区二区在线观看| 91精品在线一区二区| 日韩电影在线观看网站| 《视频一区视频二区| 国产日韩欧美一区二区三区乱码 | 毛片不卡一区二区| 亚洲图片激情小说| 国产精品欧美久久久久无广告 | 99r国产精品| 国产电影一区在线| 国产精品一区二区x88av| 久久99热狠狠色一区二区| 亚洲精品欧美综合四区| 亚洲最大成人网4388xx| 一区二区三区日韩欧美精品| 亚洲色图欧洲色图婷婷| 色悠悠亚洲一区二区| 欧美日韩一区二区三区高清| 欧美精品日韩一本| 国产偷v国产偷v亚洲高清| 亚洲激情图片qvod| 亚洲成av人在线观看| 精品一区二区在线观看| 成人av电影免费观看| 欧美日本国产视频| 中文字幕av资源一区| 欧美美女一区二区| 国产精品视频一二| 精品制服美女丁香| 欧美日韩精品一区视频| 国产欧美一区二区精品性色| 亚洲黄色小视频| bt7086福利一区国产| 亚洲精品一区二区三区影院| 亚洲欧美另类小说视频| 日韩欧美国产午夜精品| 在线播放中文一区| 亚洲色图一区二区| av影院午夜一区| 欧美精品一区二区久久婷婷| 亚洲精品国产视频| 午夜久久福利影院| 欧美精品久久99| 免费成人在线播放| 欧美韩日一区二区三区四区| 国产一区 二区 三区一级| 2024国产精品| 粉嫩嫩av羞羞动漫久久久| 成人免费在线观看入口| caoporn国产一区二区| 亚洲男人天堂一区| 91麻豆精品国产91久久久资源速度| 国产精品久久久99| 欧美一级日韩不卡播放免费| 成人免费福利片| 日韩成人午夜精品| 国产日韩欧美激情| 91精品一区二区三区在线观看| 国产一二精品视频| 亚洲在线观看免费视频| 亚洲国产精品黑人久久久| 久久99久久99| 亚洲精品欧美二区三区中文字幕| 欧美日韩夫妻久久| 亚洲欧美电影一区二区| 色猫猫国产区一区二在线视频| 免费看黄色91| 青青草国产精品97视觉盛宴| 亚洲女人的天堂| 中文字幕一区二区三区在线播放 | 在线日韩一区二区| 成人一二三区视频| 午夜精品久久久久久久99樱桃| 国产精品久久久久永久免费观看 | 色哟哟国产精品| 欧美中文字幕一区二区三区亚洲| 成人性生交大片免费看在线播放| 麻豆国产精品一区二区三区 | 麻豆精品一区二区综合av| 久久精品国产亚洲高清剧情介绍| 欧美午夜精品久久久久久孕妇| 一本大道综合伊人精品热热| 色综合色综合色综合色综合色综合| 亚洲图片一区二区| 久久99久久久欧美国产| 亚洲欧洲av另类| 免费精品99久久国产综合精品| 精品国精品国产| 在线观看成人小视频| 亚洲人成网站在线| 91丨九色丨国产丨porny| 国产精品初高中害羞小美女文| 一区二区三区精品视频在线| 精品国产乱码久久久久久老虎 | 中国色在线观看另类| 最新不卡av在线| 欧美高清hd18日本| 日韩欧美色电影| 2022国产精品视频| 中文字幕在线不卡视频| 亚洲乱码中文字幕| 国产一区 二区| 91蜜桃在线观看| 欧美日韩aaa| 有码一区二区三区| 国产精品资源网| 精品国产电影一区二区| 夜夜嗨av一区二区三区网页| 丁香桃色午夜亚洲一区二区三区| 26uuu国产日韩综合| 亚洲在线成人精品| 欧美精选一区二区| 亚洲一二三四区| 欧美日韩一区二区在线观看视频| 国产日韩亚洲欧美综合| jvid福利写真一区二区三区| 欧美精品一区二区久久婷婷 | 欧美日韩国产高清一区二区三区 | 884aa四虎影成人精品一区| **网站欧美大片在线观看| 色婷婷综合激情| 免费人成黄页网站在线一区二区| 中文字幕一区二区在线观看| 欧美影片第一页| 亚洲午夜精品网| 国产欧美视频一区二区| 欧美大片日本大片免费观看| av在线不卡免费看| 一区二区久久久久| 色综合久久久久综合体| 中文字幕二三区不卡| 4438亚洲最大| 欧美色精品在线视频| 欧美中文字幕不卡| 国产寡妇亲子伦一区二区| 精品一区二区三区久久| 久久精工是国产品牌吗| 国产一区二区成人久久免费影院 | 欧美日韩免费在线视频| 精品国产乱码91久久久久久网站| 精品国内二区三区| 国产精品你懂的在线| 亚洲123区在线观看| 狠狠色综合色综合网络| 激情五月婷婷综合网| 99re亚洲国产精品| 日韩精品一区二区三区视频| 欧美不卡一区二区三区| 亚洲欧洲精品成人久久奇米网| 亚洲国产日韩综合久久精品| 日本色综合中文字幕| 丁香婷婷综合色啪| 欧美精品久久天天躁| 亚洲欧洲精品成人久久奇米网| 天堂影院一区二区| 91在线porny国产在线看| 欧美成人一区二区三区片免费 | 国产老肥熟一区二区三区| 欧美日韩一级二级| 香蕉乱码成人久久天堂爱免费| 男男gaygay亚洲| 91精品国产综合久久久久久久 | 欧美一二三区精品| 久久av中文字幕片| 欧美一区二区三区视频免费 | 国产视频视频一区| 亚洲精品五月天| 欧美体内she精高潮| 亚洲综合一区二区三区| 色综合中文字幕国产 | 不卡视频在线观看| 久久亚洲私人国产精品va媚药| 午夜电影网一区| 中文字幕一区二区三区精华液| 北岛玲一区二区三区四区| 99精品热视频| 亚洲国产人成综合网站| 久久国产乱子精品免费女| 欧美一级日韩一级| 久久aⅴ国产欧美74aaa| 综合欧美一区二区三区| 制服丝袜亚洲网站| 国产精品福利一区| 欧美这里有精品| 狠狠狠色丁香婷婷综合激情 | 国产日韩精品久久久| 日韩精品一区国产麻豆| 国产一区二区三区久久悠悠色av| 久久蜜桃av一区二区天堂| 欧美一区二区三区公司|