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

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 之类的长连接方案提升通讯性能

原文地址:https://www.cnblogs.com/crazylights/p/9846201.html