csla 与高cpu
在项目中一直使用csla 4.13.
项目一直正常,但是偶尔会出现iis占用的cpu 突然100%,
后面客户量大的情况,加入了缓存的机制.100%的情况出现的更多了.
当时有数据库死锁的原因.cpu占用到99%.捕捉dump很不现实.在过了一年多了.终于在开启了数据库捕捉死锁提示,在修改数据库的读写为
READ_COMMITTED_SNAPSHOT 之后.如下方式.
ALTER DATABASE [数据库名] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [数据库名] SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE [数据库名] SET READ_COMMITTED_SNAPSHOT ON
ALTER DATABASE [数据库名] SET MULTI_USER
但是又出现iis占用了很高的cpu 90%,很长时间.终于第一次在服务器上面捕捉到dump.
通过对dump分析,发现问题.
11个线程访问同一个对象,卡住了.
mscorlib_ni!System.Collections.Generic.Dictionary2[[System.__Canon, mscorlib],[System.Boolean, mscorlib]].FindEntry(System.__Canon)+c8 Csla.Core.BusinessBase.CanReadProperty(Csla.Core.IPropertyInfo)+44 Csla.Core.BusinessBase.GetProperty[[System.__Canon, mscorlib]](Csla.PropertyInfo
1, Csla.Security.NoAccessBehavior)+38
此问题不好查询到.几乎从来没有想到是由于Dictionary出现的问题.
后面在github上面提交此问题.最后搜索到此问题已被处理,2015-12月的处理.详细见下面的链接.
https://github.com/MarimerLLC/csla/commit/aaf96203f45fb84594605ac80faeadab84634d47
将相关的Dictionary改为ConcurrentDictionary,即可.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构