今天系统突然折了,但是问题在哪呢?很费周折。
错误信息:
ISAPI 'c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll' 报告它自身有问题,原因如下: '检测到死锁'。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
症状:系统总是不稳定,一会能用,一会儿又死掉了。
分析过程:
这个版本已经跑了很长时间,估计不是程序死锁的问题。倒底是什么问题呢。应该是外部环境的问题。由于错误信息比较的抽象,之前没有遇到过,所以google了下,但是好像遇到此问题的人很少,不过在博客园还是遇到一位受到同样遭遇的人,但是并没有一种很好的解决方案,也没有确切的指出问题的症结。所以只有自己进行一些检查。
<1>查看最近的系统更新,看是否有关于IIS之类的更新
<2>查看系统的杀毒软件的日志文件,看是否收到了攻击
但是,检查上述两个步骤,并没有发现问题。看系统是有一些更新,迫于无奈,只好重启系统试一下(也顺便重启IIS)。重启之后,问题依旧。
观察进程管理器,发现:
W3WP的线程数,一直在变化,一会增加一个高峰值,重新增加一个W3WP进程,之前的进程过一会就自动关闭,一会又恢复正常。
这说明网站,在不断的死亡、重启。到底是哪里的问题呢?应该还是系统自己的问题了。但是它自身的版本并没有问题,为了确定这一点,我也试了之前稳定的版本,同样出现此类问题。最后,是否是系统中调用的第三方服务,将整个系统给拖死了呢?
罪魁祸首:经过检查,果然是由于程序中实时调用了一个服务,由于此服务已经停止,请求无果,出现了死锁。
教训:
<1>最大大限度保证系统与第三方服务的稳定、安全,并在请求过程中做超时判断、消息分级处理。
<2>遇到问题,首先应全面分析系统的问题可能性,因为系统本身的运行环境一般都是固定不变的,出现问题的可能性很小。
有的时候在写程序的时候,如果出了问题,首先应该怀疑自己的思路、代码哪里出了问题,而不应该去怪罪IDE或者OS出了什么BUG。这样你就少走很多弯路。