Sil*_*ght 54 asp.net worker-process cpu-usage iis-7.5 windows-server-2008-r2
我使用自己的vps,vmware,quad core和4GB Ram的Windows Server 2008-R2中大部分时间的CPU使用率是100%.当我打开Windows任务管理器并转到资源监视器时,我发现100%的使用率是因为workerprocess.exe
.我的IIS中有3个网站.
我在我的vps上安装了eset-nod32,但它没有在日志中显示任何攻击.我已经尝试搜索IIS并阻止DDOS,并且刚刚找到了禁止IP地址的扩展,但我怎样才能找到生成流量的IP地址?
该网站是用ASP.NET
和写的C#
.如何确定该网站上发生的情况以及哪些代码行导致该cpu使用?
此外,我的一个网站应该访问管理员的桌面并读取和写入一些文件.因此,我将其应用程序池 - >身份(进程模型)更改为本地系统,我不知道它是否与CPU使用率相关.
Kyl*_*Mit 91
在诊断App Pool导致问题的方面,您可以:
这应该会显示一个这样的菜单,以便您可以确定哪个App Pool正在运行.
从那里你可以简单地重新启动应用程序池,10次中有9次可以解决你遇到的任何直接问题.
除非你经营某种有争议的业务,否则这可能不是DDOS攻击.有些代码可能只是悬挂,因为它无法通过另一台服务器或陷入循环或错误分配的资源,或者您的应用程序池暂时没有被回收.
您可以以编程方式处理此问题,而无需手动识别,登录和回收应用程序池.只需在App Pool上配置CPU属性即可.只要达到CPU阈值一段时间,您就可以杀死(并自动重启)您的进程.
在您的情况下,如果您希望它以80%重新启动,您可以右键单击应用程序池并转到"高级设置"并应用以下配置:
注意:正如kraken101所指出的,不同的IIS GUI随着时间的推移对此有不同的处理.虽然配置值始终为1/1000%,但有时GUI占整个百分比.
您可以将此添加到您的配置部分,如下所示:
<applicationPools>
<add name="DefaultAppPool">
<cpu limit="80000" action="KillW3wp" resetInterval="00:01:00" />
</add>
</applicationPools>
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用Powershell的Web管理模块编写脚本,如下所示:
(*确保启用了Web脚本工具)
Import-Module WebAdministration
$appPoolName = "DefaultAppPool"
$appPool = Get-Item "IIS:\AppPools\$appPoolName"
$appPool.cpu.limit = 80000
$appPool.cpu.action = "KillW3wp"
$appPool.cpu.resetInterval = "00:01:00"
$appPool | Set-Item
Run Code Online (Sandbox Code Playgroud)
上面的步骤将有助于修复一些事情,但不会真正解决您遇到的任何潜在问题.
以下是有关执行性能监视的一些资源:
Tom*_*cek 14
好吧,这可能需要很长时间才能搞清楚.几点要缩小范围:
归档时间: |
|
查看次数: |
176608 次 |
最近记录: |