dotnetcore http伺服器研究(二)效能分析

瘋光無線發表於2018-10-24

Asp.net core kestrel 伺服器效能分析

因近來發現neocli 使用asp.net core kestrel 伺服器提供rpc呼叫,效能比較低。

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

先放程式碼,測試程式在

https://github.com/lightszero/lightchain

測試說明

測試方案1

clip_image001

http請求直接返回

測試方案2

clip_image002

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

測試方案3

clip_image003

延遲1秒返回,當前執行緒直接堵塞死

測試結果

clip_image005

結果分析

測試均針對127.0.0.1進行,採用100個httpclient物件,從100個佇列 分別請求測試123

得到的結論是

測試1 tps在 1000 到800浮動

測試2 tps 在 80 到100 浮動

測試3 tps 在 15 到 30 浮動

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

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

建議的處理方法

所有的RPC均受此影響,http響應時間越慢,整體處理能力就越差。

無論是sendraw,invokescript。

NEOCLI的rpc效能要提升,都需要比較大的改造

之後將嘗試使用websocket 之類的長連線方案提升通訊效能

相關文章