在过去几天里,我遇到了一个问题:每隔10-15分钟,我的整个服务器就无法响应,closures所有TCP连接大约3分钟。
我终于发现连接被closures了,因为在这3分钟的时间内,所有16个内核都能稳定,稳定的100%CPU。
我正在积极尝试找出什么是最大的CPU,但是,作为服务器上的一切完全冻结(即使在控制台),我无法快速检查,以了解它是什么。
这显然是个大问题,我需要马上处理。 有什么方法可以logging这个CPU峰值并将其与其他stream量区分开来吗?
我现在可以想到的唯一答案是有一点哈克,但它可能会给你一个答案。 首先是捕捉导致问题的过程。 安排这样的事情,在命令窗口中运行每一分钟:
wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime
或者你可以安排它,并改变命令行pipe道>>到一个文件。
这会给你所有正在运行的进程的CPU使用率。 从那里你可以使用像ProcDump( http://technet.microsoft.com/en-us/sysinternals/dd996900 )这样的工具来监视麻烦的应用程序,并在CPU达到使用的特定百分比时转储有关它的信息。
希望这有助于一些。
有些事情要做:在事件查看器中保存日志,并在另一台机器上打开它们,这样你就有时间看看它们了。 通过select要保存的日志并select操作来执行此操作 – 另存为。 如果将它们保存为默认文件格式,则可以在另一台机器上的事件查看器中打开它们。 我想即使是一个Windows桌面。 您也可以将它们保存为.csv。
这里的说明http://technet.microsoft.com/en-us/library/cc749339.aspx