Asp.net core kestrel 服务器性能分析

因近来发现neocli 使用asp.net core kestrel 服务器提供rpc调用,性能比较低。

和以前做过测试差异比较大,故而再次测试。考虑到micheal提供的因素主要是http相应时间,故针对http响应时间增加两个测试

先放代码,测试程序在

https://github.com/lightszero/lightchain

测试说明

测试方案1

http请求直接返回

测试方案2

延迟1秒返回,但是用Task.Delay,让Task模型不会堵塞

测试方案3

延迟1秒返回,当前线程直接堵塞死

测试结果

结果分析

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

dotnetcore http服务器研究(二)性能分析的更多相关文章

  1. x86服务器中网络性能分析与调优 转

    x86服务器中网络性能分析与调优 2017-04-05 巨枫 英特尔精英汇 [OpenStack 易经]是 EasyStack 官微在2017年新推出的技术品牌,将原创技术干货分享给您,本期我们讨论 ...

  2. Linux服务器I/O性能分析-1

    一.IOSTAT误区 1.1 误区-svctm Linux上的svctm是重要的I/O指标(I/O平均服务时间-单位毫秒),这个值直接反映了硬件的性能(I/O请求从SCSI层发出--->I/O完 ...

  3. mysql高级教程(二)-----性能分析

    MySQL常见瓶颈 1.cpu SQL中对大量数据进行比较.关联.排序.分组 2.IO a.实例内存满足不了缓存数据或排序等需要,导致产生大量物理 IO. b.查询执行效率低,扫描过多数据行. 3.锁 ...

  4. dotnetcore Http服务器研究(一)

    自从dotnet core 诞生以来,发展非常强势.我们总有些需要写一个独立的http服务器的需求,我想是时候忘记httplistener 了. dotnet framework 时代建一个小的htt ...

  5. Linux服务器I/O性能分析-2

    一.如何正确分析IO性能 1.1 BLKTRACE分析IO性能 之前的文章已经说明,要是系统发生I/O性能问题,我们常用的命令是无法精确定位问题(内核I/O调度器消耗的时间和硬件消耗的时间,这个不能作 ...

  6. Linux服务器I/O性能分析-3

    一.通过脚本分析IO的读/写数量.最大延迟.延迟的分布情况.块大小及数量 #!/bin/sh # # File Name : count_io.sh # Time : 2020-07-29-11:24 ...

  7. 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化

    高性能Linux服务器 第10章    基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...

  8. PHP 性能分析与实验(二)——PHP 性能的微观分析

    [编者按]此前,阅读过了很多关于 PHP 性能分析的文章,不过写的都是一条一条的规则,而且,这些规则并没有上下文,也没有明确的实验来体现出这些规则的优势,同时讨论的也侧重于一些语法要点.本文就改变 P ...

  9. 基于Linux服务器的性能分析与优化

    作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行,但硬件问题.软件问题.网络环境等的复杂性和多变性,导致了对系统的优化变得异常复杂,如何定位性能问题出在哪个方面 ...

随机推荐

  1. js 时间格式化 兼容safari 苹果手机

    export function formatTime (fmt, date) { date = new Date(date + '+08:00') // 兼容safari var o = { 'M+' ...

  2. [算法竞赛入门经典]Message Decoding,ACM/ICPC World Finals 1991,UVa213

    Description Some message encoding schemes require that an encoded message be sent in two parts. The ...

  3. 解决 to_csv('****',encoding='utf-8')生成文件乱码

    今天通过to_csv()方法生成csv文件时,发现打开文件都是乱码,后面通过查找资料发现encoding参数要改为“utf_8_sig”才行,“utf-8”是不行的

  4. docker部署redis及踩到的坑

    对docker很好奇,玩了一下,部署了一个redis,结果踩了很多坑 任务目的就是在docker中成功部署redis并保证数据持久化到本地,配置也使用本地配置 docker run -p : -v $ ...

  5. 【干货】提取图片元数据之exiftool

    知识源:UC3Mx: INF.2x网络安全基础:实践方法 课程  第1周.讲座2.计算机取证  常见的法医痕迹  2.2.1.元数据 exiftool是一种查看,更新或删除元数据的工具.是Window ...

  6. linux常用技能

    阿里云镜像图形界面克隆虚拟机 linux替换阿里云镜像 centos6.6安装图形界面 克隆虚拟机后网络问题 linux替换阿里云镜像 第一步:备份你的原镜像文件,以免出错后可以恢复. cp /etc ...

  7. W3CSchool实战闯关笔记(JavaScript)

    //handsome /** *ugly **/ 第一关注释 // 举例 var myName; // Define myName below this line 第二关声明变量 // Setup v ...

  8. TP5多模块开发

    一般的thinkphp框架一般都是单模块开发的,但有时候我们可能需要进行多模块开发,例如添加个后台管理的模块.这次给人讲课,在Tp多模块开发的配置上翻车,感觉很有必要总结下,话不多说,直接上干货. 总 ...

  9. 高可用Redis(一):通用命令,数据结构和内部编码,单线程架构

    1.通用API 1.1 keys命令和dbsize命令 keys * 遍历所有key keys [pattern] 遍历模式下所有的key dbsize 计算Redis中所有key的总数 例子: 12 ...

  10. vs2017打包安卓项目简述

    1.使用vs2017创建安卓项目 2.选择Release模式编译项目 3.项目存档 4.签名分发 存档完成后,点击分发按钮进入如下界面 按要求输入签名信息 选择apk保存位置 5.分享apk文件 参考 ...