![是否可以配置 Windows“资源耗尽检测器”来检测和记录高 CPU 事件,而不仅仅是低内存事件?](https://linux22.com/image/732455/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E9%85%8D%E7%BD%AE%20Windows%E2%80%9C%E8%B5%84%E6%BA%90%E8%80%97%E5%B0%BD%E6%A3%80%E6%B5%8B%E5%99%A8%E2%80%9D%E6%9D%A5%E6%A3%80%E6%B5%8B%E5%92%8C%E8%AE%B0%E5%BD%95%E9%AB%98%20CPU%20%E4%BA%8B%E4%BB%B6%EF%BC%8C%E8%80%8C%E4%B8%8D%E4%BB%85%E4%BB%85%E6%98%AF%E4%BD%8E%E5%86%85%E5%AD%98%E4%BA%8B%E4%BB%B6%EF%BC%9F.png)
是否可以配置 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 工具。
- 在 powershell 中写一些东西
- 使用 Perfmon 实用程序(它是 Windows 的一部分)。选择新的性能计数器警报,然后指定计数器并在“警报任务”上指定要触发的内容。添加事件到事件日志, 例如