问题描述
我在IIS上有Web应用程序,并且发生了奇怪的事情。几天后,启动了4,5,6或7个w3wp.exe进程,只有一个正在运行,而其他人正坐在那里并各自分配1GB以上的内存。
我无法终止该挂起进程:
C:\Users\administrator>taskkill /F /PID 5072 /T
ERROR: The process with PID 5072 (child process of PID 2988) Could not be terminated.
Reason: Access is denied.
(pid:2988是svchost.exe)
看来IIS无法杀死w3wp.exe进程,只是将其留在那里。唯一的区别是此Web应用程序位于已安装NFS卷的Z:\磁盘上。 由于此应用程序仅与sql通信并将文件保存到磁盘,因此我认为NFS上发生了一些怪异的锁定,并且进程处于某种不稳定状态,内部SSD RAID上执行相同操作的其他Web应用程序也很好。
是否有任何方法可以终止/杀死此类进程或找出导致此进程的原因?
已添加:
解决方法
您可以使用以下命令杀死工作进程:
taskkill /im processname.exe /f
taskkill /pid 1234 /f
注意:以管理员身份运行命令提示符。
“ / f”代表“力”。
还尝试设置iis回收应用程序池设置。应用程序池回收是指卸载应用程序池的所有辅助进程(w3wp.exe)并启动新实例来处理传入请求时。
设置了iis应用程序池cpu使用率设置的另一个选项:
超过其CPU限制的应用程序池工作程序进程将被迫关闭。
https://docs.microsoft.com/en-us/iis/configuration/system.applicationHost/applicationPools/add/cpu
如果您想知道内存使用率高的原因,则可以尝试生成内存转储文件,并根据转储对问题进行调试和分析。
https://docs.microsoft.com/en-us/sysinternals/downloads/procdump
https://www.microsoft.com/en-sg/download/details.aspx?id=49924
,这通常意味着某些东西已锁定在您的IIS进程中,例如网络(TCP连接)或无法读取物理文件;在您的生产环境中很难解决这个问题,我建议您可以转储内存并调查真正的原因。 (任务管理器->详细信息->右键单击进程->创建转储文件)。