我有一个网站会随机停止运行。起初我以为这是由于系统中的用户数量和数据库连接处于打开状态所致,但今天发生这种情况时,我忽略了数据库服务器,只是停止了 IIS,杀死了 w3wp.exe 进程(有很多),启动了 IIS,一切又恢复正常了。
大约有 17 个 w3wp.exe 进程,它们都使用了 200,000K 到 400,000K 之间的内存,这对我来说似乎很多。但是 Web 服务器并没有耗尽内存,我们有 24 GB 的内存,其中 7 GB 正在使用中。CPU 似乎也很好。
目前系统没有负载,w3wp.exe 进程达到约 150,000K 到 200,000K。
对于问题可能是什么,您有什么想法吗?
答案1
下次出现问题时,请检查池未分页字节计数器。具有默认 boot.ini 文件的 W2K3 服务器上的限制为 256MB。如果池未分页字节接近该数量,则会导致 IIS 出现问题。
答案2
社区戳!
您说过它是“一个网站”,但您有 17 个 W3WP?
传统上/通常/习惯上/惯例上/默认情况下,工作进程配置为每个应用程序池一个 WP。您可以将其调高到 11 个(实际上是任意数字),但作为单个 WP,其用途有限平均的应用程序通常比其中很多都表现更好。
那么,如果配置> 1,为什么?
同一站点的其他 W3WP 是否适用?应用程序?应用程序池?
诊断
如果所有 W3WP 同时停止提供内容,那么这是一个有趣的问题。使用 ProcDump 或任务管理器创建有问题的 W3WP 的转储。
获得转储后,继续进行恢复,当稍后一切运行正常时,您可以获取之前生成的内存转储文件,并使用 DebugDiag 或将其输入 WinDBG(或在线阅读 WinDBG 教程,或找一个可以做到这一点的人),并查看所有线程都在等待什么。这通常会告诉您问题似乎出在哪里,并会定义故障排除路径。
恢复
下次尝试回收单个 W3WP。如果它们顽固不化,您可以右键单击任务管理器中的“结束进程”,下一个请求应该会启动替换。(5 分钟内执行此操作超过 5 次将导致应用程序池停止,因此请避免大规模终止,并使用 UI 回收它们)。