我最近几天遇到了一个问题,每隔 10-15 分钟,我的整个服务器就会无响应,关闭所有 TCP 连接,持续约 3 分钟。
我最终发现,连接被关闭了,因为在这 3 分钟内,所有 16 个核心的 CPU 都稳定在 100%。
我正在积极尝试找出导致 CPU 超负荷的原因,但是,由于服务器上的所有内容都完全冻结(甚至在控制台中),我无法快速检查以找出原因。
这显然是个大问题,我需要立即处理。有没有办法记录这个 CPU 峰值并将其与其他流量区分开来?
答案1
我目前能想到的唯一答案有点老套,但它可能会给你一个答案。首先是捕获导致问题的进程。安排这样的操作在命令窗口中每分钟运行一次:
wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime
或者您可以安排它并更改命令行以将其传送到文件中。
这将为您提供所有正在运行的进程的 CPU 使用率。然后,您可以使用 ProcDump 之类的工具(http://technet.microsoft.com/en-us/sysinternals/dd996900) 来监视有问题的应用程序,并在 CPU 使用率达到一定百分比时转储有关它的信息。
希望这对一些人有帮助。
答案2
尝试一下:在事件查看器中将日志另存为,然后在另一台机器上打开它们,这样您就有时间查看它们。通过选择要保存的日志并选择操作 - 另存为来执行此操作。如果将它们保存为默认文件格式,则可以在另一台机器的事件查看器中打开它们。我想甚至是 Windows 桌面。您还可以将它们另存为 .csv。
此处有说明http://technet.microsoft.com/en-us/library/cc749339.aspx