gpt4 book ai didi

asp.net - 如何防止iis中的worker进程导致CPU使用率100%

转载 作者:行者123 更新时间:2023-12-03 05:53:43 26 4
gpt4 key购买 nike

在使用我自己的 vps、vmware、四核和 4GB RAM 的 Windows Server 2008-R2 中,我的 CPU 使用率大部分时间为 100%。当我打开 Windows 任务管理器并转到资源监视器时,我看到 100% 使用率是由于 workerprocess.exe 造成的。我的 IIS 中有 3 个网站。

  • 如何找出导致该使用的网站
  • 如何将 CPU 使用率限制在 80%?
  • 这可能是 DDOS 攻击吗?
  • 有什么办法可以防止DDOS吗?

我在我的 vps 上安装了 eset-nod32,但它在日志中没有显示任何攻击。我尝试搜索 IIS 和防止 DDOS,刚刚找到了禁止 IP 地址的扩展,但如何找到哪个 IP 地址正在产生流量?

该网站是用 ASP.NETC# 编写的。我如何确定该网站上发生了什么以及哪些代码行导致了 CPU 使用率?

此外,我的网站之一应该访问管理员的桌面并读取和写入一些文件。因此我将其应用程序池->身份(进程模型)更改为本地系统,我不知道这是否与CPU使用率有关。

最佳答案

诊断

在诊断应用程序池导致问题的方面,您可以:

  1. 选择服务器
  2. 转至 IIS > 工作进程

Server Settings

这应该会弹出一个像这样的菜单,以便您可以确定哪个应用程序池正在运行。

Worker Processes

从那里您只需重新启动应用程序池,十分之九就能解决您遇到的任何直接问题。

治疗

除非您经营某种有争议的业务,否则这可能不是 DDOS 攻击。某些代码可能只是挂起,因为它无法连接到另一台服务器,或者陷入循环或错误分配资源,或者您的应用程序池有一段时间没有被回收。

您可以通过编程方式处理此问题,而无需手动识别、登录和回收应用程序池。只需配置 CPU property在您的应用程序池上。当您在一定时间内达到 CPU 阈值时,您可以让它终止(并自动重新启动)您的进程。

在您的情况下,如果您希望它在 80% 时重新启动,您可以右键单击应用程序池并转到“高级设置”并应用以下配置:

App Pool Advanced Settings

注意:如 kraken101指出,随着时间的推移,不同的 IIS GUI 对此的处理方式有所不同。虽然配置值始终为 % 的 1/1000,但有时 GUI 会采用整个百分比。

您可以将其添加到 your config像这样的部分:

<applicationPools>
<add name="DefaultAppPool">
<cpu limit="80000" action="KillW3wp" resetInterval="00:01:00" />
</add>
</applicationPools>

或者,您可以使用 Powershell 的 WebAdministration Module 编写脚本。像这样:
(* make sure web-scripting-tools is enabled )

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

预防

上述步骤将有助于修复某些问题,但并不能真正解决您遇到的任何根本问题。

以下是一些有关进行性能监控的资源:

关于asp.net - 如何防止iis中的worker进程导致CPU使用率100%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com