这两周主要来自一些使用 Furion 的生产项目压测反馈,开发者通过 JMeter 和阿里云 PTS进行压测,有些抗住了,有些没抗住。
所以这两周针对 Furion 底层做了非常多的优化,大大减低了内存和CPU的占用,最后通过更新到最新版后,全部抗住了。
视频体验
下面的项目是使用 Furion 最新版仿 Trello 功能(200%)体验,双核,内存4G,代码1M。
性能优化
本期主要针对框架底层做了不少性能改进,主要是高频请求下内存的占用和CPU的持续飙升,主要来自一个小伙伴的反馈。
🤐 他项目使用了 Furion 的事件总线,每秒高频接收 4000条消息并处理,由于 GC 来不及回收导致内存和CPU占用非常大。
😐 后来经过框架底层优化之后,内存持续稳定,但 CPU 一直下不了。
😊 最后经过继续优化之后,内存正常了,CPU 也正常了。
本期更新
v4.6.8
版本细节:https://gitee.com/dotnetchina/Furion/issues/I5X2Q0 2022.10.22v4.6.7
版本细节:https://gitee.com/dotnetchina/Furion/issues/I5WQPP 2022.10.20v4.6.6
版本细节:https://gitee.com/dotnetchina/Furion/issues/I5WOIV 2022.10.20v4.6.5
版本细节:https://gitee.com/dotnetchina/Furion/issues/I5VPD1 2022.10.14v4.6.4
版本细节:https://gitee.com/dotnetchina/Furion/issues/I5VIAQ 2022.10.13v4.6.3
版本细节:https://gitee.com/dotnetchina/Furion/issues/I5V99T 2022.10.12v4.6.2
版本细节:https://gitee.com/dotnetchina/Furion/issues/I5V6UE 2022.10.12v4.6.1
版本细节:https://gitee.com/dotnetchina/Furion/issues/I5UYQW 2022.10.11v4.6.0
版本细节:https://gitee.com/dotnetchina/Furion/issues/I5UQZ7 2022.10.10
新特性
- [新增]
LoggingMonitor
支持FileResult
类型监听 4.6.0 bf9c0b1- [新增]
LogMessage
结构UseUtcTimestamp
字段,解释日志记录时间格式是UTC
还是LOCAL
时间 4.6.1 aab0371- [新增] 事件总线模块重试失败后支持回调 4.6.1 #I5UVMV
- [新增]
LoggingMonitor
支持序列化忽略指定属性名或属性类型 4.6.1 81c6343- [新增]
long
序列化丢精度的JsonConvert
内置转换器,.AddLongTypeConverters()
4.6.5 #I5VJHC aded58d- [新增]
app.EnableBuffering()
拓展,解决Request.Body
不能重复读问题 4.6.5 aded58d- [新增] 支持特别接口使用特定的序列化规则 4.6.6 797b0bf
- [新增]
LoggingMonitor
自动解析JWT
时间戳为时间格式 4.6.8 9e31b0b突破性变化
- [新增] 适配
.NET 6.0.10
和.NET 7 RC2
4.6.2 6bb2fad- [新增] 内置
Microsoft.AspNetCore.Mvc.NewtonsoftJson
拓展,原因是太多人使用了 4.6.5 aded58d- [移除]
拓展方法 4.6.0 ec4838c"some log".SetCategory(name)
- [移除]
和DateOnlyJsonConverter
处理 4.6.5 aded58dDateOnlyOffsetJsonConverter
- [调整] 事件总线触发处理程序的逻辑,由过去的
foreach
改为Parallel.ForEach
,吞吐量提升近 4 倍 4.6.4 7384c9c- [调整]
名称为.AddDateFormatString()
.AddDateTimeTypeConverters()
4.6.5 aded58d- [调整] 重构日志模块设置上下文数据功能 4.6.0 1c198ee
- [移除] 远程请求
.SetTimeout
和[Timeout]
配置方法,采用全局统一配置 4.6.4 7384c9c问题修复
- [修复]
4.5.9+
版本新增的IncludeScopes
配置导致日志上下文失效 4.6.0 4a76841- [修复] 多个
sql
共用DbParameters
出现冲突问题 4.6.0 #I5UO2H- [修复] 高频率写入日志导致堆内存溢出的异常问题 4.6.0 #I5UJRS
- [修复] 框架内部所有使用
.CreateLogger
创建的日志对象无法应用上下文问题 4.6.0 ec4838c- [修复] 修复远程请求不能在
Worker Serivce
中进行构造函数注入,原因是注册为Scope
范围作用域 4.6.3 974f835- [修复] 个别服务器的
SQL Server
不支持TLS 1.2
协议问题 4.6.3 974f835- [修复]
.ToDictionary()
拓展不支持JObject
类型问题 4.6.5 #I5VJHC a11bf8d- [修复]
LoggingMonitor
处理long
类型丢精度问题 4.6.5 #I5VJHC aded58d- [修复] 动态
WebAPI
在class
类型上贴[ApiDescriptionSettings(true)]
导致接口404
问题 4.6.7 #I5WQ18- [修复] 超高频率下发送事件总线消息,但是
GC
来不及回收导致内存和CPU
爆掉问题 4.6.8 dbc7935- [修复]
JWT
模块自动刷新Token
达到临界值时导致自动刷新失败,并返回错误的401
状态码 4.6.8 #I5WXHZ- [修复] 自动生成
vue/react/angular
客户端工具库错误处理Token
问题 4.6.8 #I5WXHZ其他更改
- [调整]
LoggingMonitor
返回值类型是泛型
时获取FullName
带程序集签名问题 4.6.2 f0aaec6- [调整] 优化远程请求性能,添加复用池的机制,避免频繁销毁创建 4.6.4 7384c9c
文档
- [新增] 远程请求设置客户端生命周期配置文档和新超时配置文档
- [新增]
JSON
序列化处理long
类型说明文档- [新增]
JSON
反序列化DateTimeOffset
类型个别格式出错问题- [新增] 规范化结果支持特定接口配置独立序列化配置文档
- [更新] 日志记录文档、事件总线文档、数据库入门文档、
JSON
序列化文档、远程请求文档、安全授权文档、生成前端请求代理文档
其他
还没有评论,来说两句吧...