首页 > 编程语言 >跨平台网页开发框架ASP.NET Core 7性能大提升,正式支持HTTP/3

跨平台网页开发框架ASP.NET Core 7性能大提升,正式支持HTTP/3

时间:2022-11-26 23:04:18浏览次数:37  
标签:Core ASP HTTP 微软 队列 跨平台 NET

跨平台网页开发框架ASP.NET Core 7性能大提升,正式支持HTTP/3_asp.net

 

微软跨平台网页开发框架ASP.NET Core即将迎来第7个主要版本,由于.NET 7对性能的诸多改善,ASP.NET Core 7也同时受益,官方解释,由于.NET 7在性能部分的提升,许多方面直接或间接地强化ASP.NET Core性能。

 

 

ASP.NET Core 7从.NET 7中获益,使Ampere机器可更好地扩展,并且获得巨大的性能提升。Ampere机器是以Arm处理器为基础,拥有大量核心,因为其低功耗和平价的优点,被用于许多云计算服务器,但这些机器过去并无法很好的扩展,而.NET 7对全局线程池队列,和Socket连接使用的内存进行分区,改善了这个缺点。

 

 

微软解释,分区能够使核心在自己的队列上运行,减少竞争并提高大型核心机器的可扩展性。微软在80核心的Ampere机器上实验,明文平台基准性能提高了514%,JSON平台基准性能也提高了311%。

 

 

但是为了提高性能,ASP.NET Core 7也做出一些妥协,因为现在有多个队列被读取,因此不再保证工作项目能以严格的FIFO排序进到全局线程队列中,另外,当机器处在低负载状态,要进行工作窃取(Work stealing)时,因为现在需要搜索更多的队列,因此可能使CPU使用率略为增加。

 

 

由于抛出异常可能成本高昂,而ASP.NET Core 7让开发者可以掌握网页服务器Kestrel的Socket传输区域,因此开发者可进一步避免程序在连接关闭期间,在特定层抛出异常,微软提到,在他们的测试中,不抛出异常能够降低CPU使用率,特别是在Linux上,可以降低10% CPU使用率。

 

 

微软在ASP.NET Core 6中,更新许多Kestrel中的异步读取方法,减少从请求中读取所使用的内存,微软在ASP.NET Core 7扩展了这项改进,最明显的是在WebSockets的使用案例上,过去ASP.NET Core 6进行1,000次读取,系统需要分配3,000个状态机,也就是说,每次读取系统就需要分配3个独立的状态机,而ASP.NET Core 7消除了所有WebSocket连接读取的状态机分配。

 

 

ASP.NET Core 6中Kestrel的HTTP/2处理,在特定情况存在较高的锁争用(Lock Contention),而ASP.NET Core 7消除了大部分锁争用的机会。微软解释,HTTP/2在单一连接上可以有多个流媒体,当一个流媒体写入连接时,便需要一个锁来阻塞其他并行的流媒体,他们测试了几种方法,最后借由在一个频道中队列所有写入,并让单一取用者任务程序来处理队列,执行所有的写入工作,进而消除大部分争用,使服务器不再被锁争用阻塞。

 

 

微软在ASP.NET Core 6添加对HTTP/3的实验性支持,在7.0中,HTTP/3已经不是实验性功能,但仍是选择激活的项目。除了改善HTTP/3的可靠性、正确性和最终API定案之外,HTTP/3也有大幅度的性能提升,微软改进客户端和服务器端用来压缩标头的QPack,QPack现在能以更有效率的方法压缩发送、接收标头。



标签:Core,ASP,HTTP,微软,队列,跨平台,NET
From: https://blog.51cto.com/u_11990719/5889234

相关文章

  • .NetCore【工作应用】AutoMapper
    AutoMapperOOM(Object-Object-Mapping)组件为了实现实体间的相互转换,从而避免我们每次采用手工的方式进行转换。使用安装nuget包install-packageAutoMapperinstall-......
  • Dbian10编译nginx实验部署HTTP3(Quiche)
    https://zach.vip/web/dbian10%E7%BC%96%E8%AF%91nginx%E5%AE%9E%E9%AA%8C%E9%83%A8%E7%BD%B2http3/......
  • linux重置core文件生成目录
    查看/proc/sys/kernel/core_pattern文件或kernel.core_pattern里面的内容默认是core,也就是core文件的生成路径和工作路径一致,如果内容为其他值,那么对应的core文件就会生成......
  • HTTP缓存
    浏览器、缓存服务器、源服务器   浏览器:资源请求直接发起方。   源服务器:资源实际提供方。   缓存服务器:在浏览器、源服务器之间架设的中间服务器,由它代替浏览......
  • 《ASP.NET Core技术内幕与项目实战》精简集-DDD准备5.4:领域事件MediatR
    本节内容,部分为补充内容,部分涉及到9.3.8-9.3.9(P327-334)。主要NuGet包:MediatR.Extensions.Microsoft.DependencyInjection 领域事件可以切断领域模型之间的强依赖关系......
  • 【认证机制】2-Apache配置HTTP Basic Auth
    1.基本流程1.1使用htpasswd命令创建用户文件进入apache安装目录,使用htpasswd.exe创建用户Admin(密码:password),保存在 apache_auth.htpasswd中(生成文件可以是任意......
  • 【认证机制】1-Http Basic Auth
    一、简介HTTPBasicAuth是HTTP协议提供的一种简单的挑战应答机制,服务器可以通过该机制从客户机请求认证信息(用户标识和密码)。客户端在授权标头中将身份验证信息凭证(采用......
  • 1532_AURIX_TriCore内核架构_中断
    全部学习汇总:​​GreyZhang/g_tricore_architecture:somelearningnoteabouttricorearchitecture.(github.com)​​中断一直是我想了解关注的一个功能模块,因为感觉不......
  • 1533_AURIX_TriCore内核架构_指令集信息
    全部学习汇总:​​GreyZhang/g_tricore_architecture:somelearningnoteabouttricorearchitecture.(github.com)​​学习的顺序有一点调整,切换到了内核的第二卷。先了......
  • 1531_AURIX_TriCore内核架构_任务以及函数
    全部学习汇总:​​GreyZhang/g_tricore_architecture:somelearningnoteabouttricorearchitecture.(github.com)​​继续前面的内核架构学习,这次看一下任务以及函数的......