是否可以配置 Windows“资源耗尽检测器”来检测和记录高 CPU 事件,而不仅仅是低内存事件?

是否可以配置 Windows“资源耗尽检测器”来检测和记录高 CPU 事件,而不仅仅是低内存事件?

是否可以配置 Windows“资源耗尽检测器”功能来检测和记录高 CPU 事件,而不仅仅是低内存事件

有些人可能知道,如果 Windows 检测到内存不足的情况,“资源耗尽检测器”机制将检测到该情况并在 Windows 事件日志(系统)中报告,作为 eventid 2004,来源为“资源耗尽检测器”。

遗憾的是,它似乎只在内存不足的情况下才会触发。我希望它也能在长时间的高 CPU 情况下触发。但我没有找到任何资源表明这是可能的。有人知道吗?

动机:

如果您可能想知道我为什么要寻找这个,该事件日志行的一个好处(和简单)是它列出了在警报发生时哪些进程使用了​​最多的内存,如下所示:

“Windows 成功诊断出虚拟内存不足的情况。以下程序消耗最多的虚拟内存:bob.exe (9412) 消耗了 1253019648 字节,jane.exe (4828) 消耗了 430903296 字节,而 bill.exe (2228) 消耗了 395128832 字节。" [重点是我,这个过程“名字已被更改以保护无辜者”,就像老《Dragnet》电视节目曾经说过的那样。]

当系统 CPU 使用率过高且持续时间过长时,我希望获得类似的有问题的进程列表。

鉴于“资源耗尽检测器”的通用名称(而不仅仅是“低内存检测器”),我希望可以找到一些东西,但到目前为止我的谷歌搜索还没有让我失望。

我也没有找到任何讨论如何设置内存限制(大小多少,持续时间多长)。了解这一点也很有趣,如果有人能找到有关配置该检测器的更多信息。

(至于这里的次要目的,即了解何时 CPU 过高以及了解哪些进程是导致这种情况的原因,我会说Perfmon 及其数据收集器集似乎不是解决方案。这些要求您确定要监视的特定过程。我正在寻找可以触发的东西,即使我可能不认为有某种工具可以监视某些特定过程。)

答案1

答案适用于任何监控系统,如 PRTG(免费提供最多 100 个传感器)或 Centreon(开源)。您可以添加要监控的服务器、服务器传感器(即 CPU 传感器)并指定将触发警报的值。

另一种方法是使用现有的 Windows 工具。

  1. 在 powershell 中写一些东西
  2. 使用 Perfmon 实用程序(它是 Windows 的一部分)。选择新的性能计数器警报,然后指定计数器并在“警报任务”上指定要触发的内容。添加事件到事件日志, 例如

perfmon 中的示例

相关内容