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 之类的长链接方案提高通信性能

相关文章
相关标签/搜索