一个应用程序池的 aspx 应用程序中的异常是否也可能导致其他应用程序池出现问题?
我遇到了 IIS v7.5 的问题,其中整个 IIS 在某些应用程序错误后没有响应并且所有 http 请求都已超时。但是,在停机期间,日志文件并没有透露有关此类问题的太多信息。
如果是,在什么情况下会发生这种情况?
一个应用程序池的 aspx 应用程序中的异常是否也可能导致其他应用程序池出现问题?
我遇到了 IIS v7.5 的问题,其中整个 IIS 在某些应用程序错误后没有响应并且所有 http 请求都已超时。但是,在停机期间,日志文件并没有透露有关此类问题的太多信息。
如果是,在什么情况下会发生这种情况?
不典型,但这取决于异常的原因,以及根本原因是否在(或正在破坏)共享资源中。
在一个典型的、无共享的、默认的网站世界中,每个 W3WP 都有自己的内存空间、句柄表和相关资源,这些对于进程来说是唯一的。一个崩溃,没人在乎。(旁白:实际上,如果它真的是默认网站,即仅静态内容,崩溃将是非常奇怪的,并且很好地表明盒子上发生了真正错误的事情)。
如果 Web 应用程序选择使用资源(例如,数据库表或磁盘上某处的文件)并且多个 Web 应用程序使用相同的资源,那么一个问题可能会间接导致其他问题。
例如:您在进程 A 中启动的那个非常昂贵的SQL 查询,您没有从中捕获超时异常,但仍然占用了进程 BC 和 D 使用的同样糟糕的数据库服务器,这两个进程也即将超时。 .
或者,如果一个 Web 应用程序对同一个盒子上的另一个应用程序池进行 HTTP 调用,那么是的,这是一个明显的依赖关系,也是一个明显的问题所在!
但一般来说,如果所有事情都同时出错,如果您运行多个 Web 应用程序,则它们不太可能是原因......原因更有可能是其他软件,90% 的时间带有内核模式组件,在盒子上运行。
关键示例是:依赖于 SMB 共享的东西(即 \server\share 上的内容),特别是当目标是非 Windows SMB 仿真器(因此不兼容错误)或正在使用另一个有趣的 IO 过滤器驱动程序时......巧妙地将我们带到了防病毒和过滤那种性质的驱动程序...... K-mode驱动程序获取文件访问,通过一个繁忙或交叉的u-mode进程重新路由请求,导致k-mode IO延迟,导致无穷无尽乐趣)。(荣幸地提到由身份验证基础设施中断引起的身份验证困难)。
尽管如此,这只是没有任何数据的猜测,所以最好的第一步是获取内存转储(DebugDiag 或任务管理器),将它们提供给 DebugDiag 或支持 Windbg 的友好伙伴,并让他们尝试确定是否存在延迟的用户模式原因。
如果没有,那么您将转向 k-mode 故障排除,事情会变得有些混乱(最常见的是,蓝屏框以获取 k-mode 崩溃转储,而怪异正在发生)。