这个问题的特征可以用一个字形容:怪。
这个问题的主题:Blog应用程序引起的IIS 6应用程序池崩溃。
问题的主要现象:
当把新版的Blog程序投入到正式运行环境中后,一开始运行正常,过几分钟后,打开页面速度就变得很慢,浏览器一直处于请求状态(浏览器右上角的图标一直在忙碌),却得不到服务器的正常响应,我的理解就是IIS虽然接受了请求,但应用程序池中的程序却不能对请求作出响应,从而让浏览器在苦苦等待。这时,CPU占用却很少,系统事件日志中会出现这样的警告:
A process serving application pool 'AppPool_CNBlogs_New' failed to respond to a ping. The process id was '3844'.
我把这样的现象描述为:应用程序池崩溃。
当应用程序池崩溃时,运行于内核模式的HTTP.SYS会建立一个新的应用程序池进程w3wp.exe 处理新的请求,并回收旧的应用程序池,可新的应用程序池进程运行一会儿又崩溃,IIS又建立新的应用程序池进程,这样反反复复,网站处于一种很不稳定的运行状态。当IIS回收旧的应用程序池时,系统事件日志中还会出现这样的警告:
A process serving application pool 'AppPool_CNBlogs_New' exceeded time limits during shut down. The process id was '2380'.
这个警告是通配符映射应用程序存在的通病,可能是通配符映射这样的方式让IIS无法对应用程序池占用的所有资源进行正常回收。
对于这个问题,大家都知道肯定是程序中的Bug,而关键问题是找出Bug所在,而我七天的努力却一无所获。同样的程序在本机和服务器上测试都很正常,可是一切换到正式运行环境就出问题。新版本中代码改动不少,但我把主要的改动恢复了也不能解决问题,几天来在代码苦苦寻找Bug的线索也没有收获,也许是很小的代码问题引起的,但我就是找不到。如果没有一定的线索,即使将所有代码检查一遍,也不一定能找到Bug所在。
这个吗、
温馨提示:答案为网友推荐,仅供参考