ISAPI c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll 报告它自身有问题,原因如下: Deadlock detected 这个问题,字面意思是程序发生死锁了,它会导致w3wp进程重启。通常这个问题不好查到原因。我知道两个可能导致此问题的实例

  1. 在程序中使用了lock或者ReaderWriterLock,锁资源发生了争用
    下面是一小段代码:

复制代码 代码如下:
//_rwLock的类型是ReaderWriterLock
_rwLock.AcquireWriterLock(100);
DoSomething();
_rwLock.ReleaseWriterLock();

这行代码是有问题的,如果在DoSomething()方法执行中发生一次异常,这个写锁就释放不了了,再次请求时就会等待直到超时,在多线程的情况下就会发生死锁’Deadlock detected’
正确的写法应该是:

复制代码 代码如下:
try
{
_rwLock.AcquireWriterLock(100);
DoSomething();
}
finally
{
if (_rwLock.IsWriterLockHeld)
_rwLock.ReleaseWriterLock();
}

这样就算在DoSomething方法执行时发生了异常,也可以释放写锁。

  1. 数据库连接的超时时间设置的很长而在设定的超时时间之内连接耗尽了,再次要求打开数据库连接时也可能会出现此问题。这个是数据库连接串的配置问题,超时时间要设置的适当,不要过长。

发生这个问题时的日志写的很笼统:
ISAPI ‘c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll’ 报告它自身有问题,原因如下: ‘Deadlock detected’。

有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。

这样导致不容易找到问题发生在哪块,所以我记录两种发生此问题的实例,希望有用。

问题分析方法(这个很有必要的)

今天系统突然折了,但是问题在哪呢?很费周折。

错误信息:

ISAPI’c:windowsmicrosoft.netframeworkv2.0.50727aspnet_isapi.dll’报告它自身有问题,原因如下:‘检测到死锁’。

有关更多信息,请参阅在http://go.microsoft.com/fwlink/events.asp的帮助和支持中心。

症状:系统总是不稳定,一会能用,一会儿又死掉了。

分析过程:

这个版本已经跑了很长时间,估计不是程序死锁的问题。倒底是什么问题呢。应该是外部环境的问题。由于错误信息比较的抽象,之前没有遇到过,所以google了下,但是好像遇到此问题的人很少,不过在博客园还是遇到一位受到同样遭遇的人,但是并没有一种很好的解决方案,也没有确切的指出问题的症结。所以只有自己进行一些检查。 友情链接检查

<1>查看最近的系统更新,看是否有关于IIS之类的更新

<2>查看系统的杀毒软件的日志文件,看是否收到了攻击

但是,检查上述两个步骤,并没有发现问题。看系统是有一些更新,迫于无奈,只好重启系统试一下(也顺便重启IIS)。重启之后,问题依旧。

观察进程管理器,发现:

W3WP的线程数,一直在变化,一会增加一个高峰值,重新增加一个W3WP进程,之前的进程过一会就自动关闭,一会又恢复正常。

这说明网站,在不断的死亡、重启。到底是哪里的问题呢?应该还是系统自己的问题了。但是它自身的版本并没有问题,为了确定这一点,我也试了之前稳定的版本,同样出现此类问题。最后,是否是系统中调用的第三方服务,将整个系统给拖死了呢?

罪魁祸首:经过检查,果然是由于程序中实时调用了一个服务,由于此服务已经停止,请求无果,出现了死锁。

w3wp进程发生死锁ISAPI aspnet相关推荐

  1. 【详细解读】进程管理 -死锁问题 系统有三个进程:A B C 这3个进程都需要5个系统资源。如果系统至少有多少个资源,则不可能发生死锁

    进程管理 -死锁问题 系统有三个进程:A B C 这3个进程都需要5个系统资源.如果系统至少有多少个资源,则不可能发生死锁? 最多的状态是:每个进程恰好都分到了四个资源, 都只需要一个资源就可以运行, ...

  2. 根据条件判断是否发生死锁,已知资源数M、进程数N、最大需求数W(例子!!)

    设系统中仅有一类数量为M的独占型资源,系统中有N个进程竞争该类资源,其中各进程对该类资源的最大需求数为W,当M,N,W分别取下列值时,试判断哪些情况会发生死锁,为什么? M=2,N=2,W=1 M=3 ...

  3. 求多个进程并发运行时,不发生死锁时的最少共享资源数

    案例: 某系统中有 3 个并发进程竞争资源 R,每个进程都需要 5 个 R,那么至少有( )个 R,才能保证系统不会发生死锁. A.12 B.13 C.14 D.15 解题思路 找出发生死锁的临界资源 ...

  4. OS之进程管理 --- 死锁

    什么是死锁 在正常操作模式下,进程按如下顺序来使用资源: 申请:进程请求资源 使用:进程对资源进行操作 释放:进程释放资源 当一组进程中的每一个进程度在等待一个事件,而这事件只能有一组进程的另一个进程 ...

  5. 基于ReentrantLock发生死锁的解决方案

    概念 死锁 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程 ...

  6. 10 操作系统第二章 进程管理 死锁、死锁的处理策略 银行家算法

    文章目录 1 死锁 1.1 死锁定义 1.2 死锁.饥饿.死循环的区别 1.3 死锁产生的必要条件 1.4 什么时候会发生死锁 1.5 死锁的处理策略 1.6 死锁的概念小结 2 死锁预防 2.1 破 ...

  7. 多程序同时操作 mysql_关于多个程序同时操作一个表发生死锁的问题

    锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 ...

  8. 面试-操作系统-进程管理-进程-进程调度-死锁

    文章目录 ==概念== 备注 简单说下你对并发和并行的理解? 同步.异步.阻塞.非阻塞的概念? 操作系统概念? 一个程序从开始运行到结束的完整过程,你能说出来多少? 用户态和内核态是如何切换的? 什么 ...

  9. C++程序员应了解的那些事(103)发生死锁必须满足四个条件:互斥条件/请求与保持条件/不剥夺条件/循环等待条件

    要想发生死锁有 4 个缺一不可的必要条件: 第 1 个叫互斥条件,它的意思是每个资源每次只能被一个线程(或进程,下同)使用,为什么资源不能同时被多个线程或进程使用呢?这是因为如果每个人都可以拿到想要的 ...

最新文章

  1. EXCEL 电子表格MID 返回值 不能用于计算的问题
  2. [C#基础知识系列]专题十:全面解析可空类型
  3. C++ 中有大量的函数用来操作以‘\0‘结尾的字符串
  4. Scapy学习笔记一
  5. 超哥笔记--linux准备知识(1)
  6. 中国水泥工业节能减排行业盈利前景与十四五专项规划报告2022年
  7. 魔幻的“净醛产品”:宜家被罚“亡羊”,欧派用视频“补牢”?
  8. 20210903 惯性环节1/(s+1)的各种响应
  9. QT的QRadioTuner类的使用
  10. c语言用什么能暂存结构指针,c语言中什么是指针
  11. Linux更改显示管理器,聊聊Linux操作系统中的显示管理器及如何更换
  12. java获取整点与凌晨的时间戳
  13. go tool trace goalng调优工具
  14. java学习(16):巩固练习
  15. transporter上传卡正在交付_【iOS】Xcode11使用Transporter将APP上传到App Store,卡在正在验证APP...
  16. js延迟加载优化页面响应速度
  17. vue框架导入echarts第一个示例
  18. 数据质量评价体系(附思维导图)
  19. 目标跟踪(二):拓展卡尔曼滤波(EKF)
  20. bzoj 2959: 长跑

热门文章

  1. android:intent flags
  2. Ubuntu9.10安装常用软件
  3. 可以在某些场合替代onload事件的domReady事件
  4. leetcode 82. 删除排序链表中的重复元素 II
  5. 详解Python开发的发展方向及其对应的薪资!
  6. 深度学习系列之CNN核心内容
  7. Eclipse搭建Mybatis框架
  8. MyBatis ofType和javaType区别
  9. shiroConfig配置中要注意的事项
  10. 017_Jedis的String数据类型