Answers:
前段时间我写了 Windows Perfmon:十大计数器 在我的旧博客。本文简要介绍如何使用Perfmon来确定硬件瓶颈的位置:处理器,内存,磁盘或网络(其次,确定这些资源的当前操作负载)。我不能强调这一步: 首先确保您知道哪些硬件资源被滥用 。 然后 去寻找资源猪。
一旦确定哪个资源被过度使用,您就有两个选择:添加更多资源(获得更快的CPU,添加内存,获得更快的磁盘或NIC)......或者追踪该资源的最高用户,以及要么杀死他们,要么采取措施减少他们的贪婪。
追踪热门资源的最简单方法是 Process Explorer 。请务必从具有Admin privs的帐户运行它。这里有一个快速而又脏的列表:
祝好运!
有 perfmon.msc
那里有sysInternals' 进程监视器 ,哪些日志。
您可能希望从使用任务管理器开始,它将为您提供相当多的信息。
内置任务管理器的强大替代方案( taskmgr.exe
)是 Process Explorer ( procexp.exe
)。 Process Explorer由SysInternals创建,现在由Microsoft拥有和分发。
至于定期采集正常健康系统的样本以建立基线编号,您可以创建使用PowerShell Cmdlet的计划任务 Get-Process
,或使用普通DOS的批处理文件 tasklist.exe
。
你可以使用来自sysinternals的ps或来自cygwin的ps,或者如果你认识一个开发人员,那么编写一个程序来运行每个进程并提取某些统计信息是微不足道的。
这段代码应该真的在stackoverflow上,而且霸主可能会说些什么,但会让你知道这个任务有多容易:
public static string ListAllApplications()
{
StringBuilder sb = new StringBuilder();
foreach (Process p in Process.GetProcesses("."))
{
try
{
if (p.MainWindowTitle.Length > 0)
{
sb.Append("Window Title:\t" +
p.MainWindowTitle.ToString()
+ Environment.NewLine);
sb.Append("Process Name:\t" +
p.ProcessName.ToString()
+ Environment.NewLine);
sb.Append("Window Handle:\t" +
p.MainWindowHandle.ToString()
+ Environment.NewLine);
sb.Append("Memory Allocation:\t" +
p.PrivateMemorySize64.ToString()
+ Environment.NewLine);
sb.Append(Environment.NewLine);
}
}
catch { }
}
return sb.ToString();
}
我一直都有这个问题。 Firefox通常是我的主要冒犯者,但偶尔我会运行内存泄漏。
我知道之前已经说过但我会再说一遍...... Process Explorer实际上有一个非常方便的功能,您可以自定义它以提供一些额外的信息列。具体来说,您感兴趣的额外列是“CPU历史记录”和“私有字节历史记录”我认为这是您试图从系统中收集的信息。它显示了每个进程的滚动图。