dotnetcore http服務器研究(二)性能分析

Asp.net core kestrel 服務器性能分析git

因近來發現neocli 使用asp.net core kestrel 服務器提供rpc調用,性能比較低。github

和之前作過測試差別比較大,故而再次測試。考慮到micheal提供的因素主要是http相應時間,故針對http響應時間增長兩個測試web

先放代碼,測試程序在服務器

https://github.com/lightszero/lightchainwebsocket

測試說明

測試方案1

clip_image001

http請求直接返回asp.net

測試方案2

clip_image002

延遲1秒返回,可是用Task.Delay,讓Task模型不會堵塞socket

測試方案3

clip_image003

延遲1秒返回,當前線程直接堵塞死性能

測試結果

clip_image005

結果分析測試

測試均針對127.0.0.1進行,採用100個httpclient對象,從100個隊列 分別請求測試123.net

獲得的結論是

測試1 tps在 1000 到800浮動

測試2 tps 在 80 到100 浮動

測試3 tps 在 15 到 30 浮動

另外調整服務端ThreadPool.SetMaxThread 對測試結果乾擾很小,忽略不計

分析此結論認爲,kestrel 的處理能力對響應時間長的請求比較敏感。實際用於處理請求的線程估計是30左右,沒有調整方法。

建議的處理方法

全部的RPC均受此影響,http響應時間越慢,總體處理能力就越差。

不管是sendraw,invokescript。

NEOCLI的rpc性能要提高,都須要比較大的改造

以後將嘗試使用websocket 之類的長鏈接方案提高通信性能

相關文章
相關標籤/搜索