如何在不存在的情况下调查 CPU 使用率峰值?

Cad*_*nge 4 windows cpu-usage sql-server scheduled-tasks database-administration

我有一台服务器在深夜莫名其妙地使用了大量 CPU,而此时它不应该承受沉重的负载。这会导致一些数据库调用超时,并且我在 PerfMon 中设置了一些警报以在 CPU 使用率超过 50% 时触发,这似乎与 CPU 峰值与数据库超时一致。

我怀疑这是某种计划任务,但我查看了 Windows 和 SQL Server 计划任务列表并没有找到任何内容。Windows 事件日志仅包含数据库超时和 PerfMon 条目,表明 CPU 使用率已飙升。

我的问题是这样的:如何在不实际存在的情况下确定导致 CPU 峰值的进程?我真的不想在凌晨 2 点登录服务器

更新:事实证明问题出在我正在开发的产品上。这个问题在正常工作时间开始显现出来,毕竟我不必依赖一些偷偷摸摸的性能调查技术。

Tam*_*man 7

这里有一些选择;如果 CPU 使用率很高,最简单的方法是 Process Explorer,否则您更有可能希望查看 Process Monitor 中的图表。我觉得最有可能的罪魁祸首是备份或更新,所以你可能想看看这些是什么时候安排的。任务调度程序确实显示了上次运行任务的时间...

无影无踪

基于事件

带着一丝

  • Process Monitor,将其设置为保留大量历史记录并让它仅记录分析事件。

    1. 在选项中,您可以设置历史深度并可以打开分析事件的生成。

    2. 然后,禁用 I/O、注册表和网络按钮。

  • Windows Performance Toolkit具有 XPerf,它允许您进行高级跟踪。

    这可能是第一次很难,所以你可能想先尝试进程监视器......