zoukankan      html  css  js  c++  java
  • 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.PropertyInfo1, Csla.Security.NoAccessBehavior)+38

    此问题不好查询到.几乎从来没有想到是由于Dictionary出现的问题.

    后面在github上面提交此问题.最后搜索到此问题已被处理,2015-12月的处理.详细见下面的链接.

    https://github.com/MarimerLLC/csla/commit/aaf96203f45fb84594605ac80faeadab84634d47

    将相关的Dictionary改为ConcurrentDictionary,即可.

  • 相关阅读:
    mysql_Navicat数据库破解
    SpringBoot+ Mybatis 搭建
    SSH框架搭建
    SSM 框架搭建
    android 网络_网络图片查看器
    android 网络_网络源码查看器
    android ListView_显示数据库数据
    android ListView_新闻案例
    android ListView的怪异现象
    android ListView_Tiger
  • 原文地址:https://www.cnblogs.com/forhell/p/6709174.html
Copyright © 2011-2022 走看看