我有7个Windows服务。我想监控各个服务的性能,如处理器使用情况,内存使用情况等。
如果我使用perfmon,它会提供整个系统,但不会提供个别服务。任何人都可以建议我如何监控个别服务的表现?
答案 0 :(得分:3)
Perfmon可以监控个别流程!只需在“添加计数器/性能对象”组合中选择进程即可。对于“快速”监控,我发现Sysinternals(现在是Microsoft)Process Explorer简单易用。某些服务为您提供可通过MRTG或Cacti等工具显示的性能信息(可通过套接字/文件等获得)。
答案 1 :(得分:1)
要检查各个服务的内存,您必须将服务类型更改为"自己的流程"。 This Gist显示完整的代码。中心思想是尝试将服务类型从最不干扰的方式改为最具侵入性的方式:
$win32Service = Get-CimInstance -ClassName Win32_Service -Filter "Name = '$ServiceName'" -Verbose:$false
if ($win32Service)
{
if (!(Set-ServiceTypeToOwnProcessByCim $win32Service))
{
if (!(Set-ServiceTypeToOwnProcessByWindowsRegistry $win32Service))
{
if (Grant-FullControlRightsOnServiceRegistryKeyToCurrentUser $win32Service)
{
Set-ServiceTypeToOwnProcessByWindowsRegistry $win32Service | Out-Null
}
}
}
}
else
{
Write-Warning "[$ServiceName] Service not found"
}
将Set-ServiceTypeToOwnProcess.ps1
和Enable-Privilege.ps1
文件放在同一文件夹中时,您可以像这样执行脚本:
.\Set-ServiceTypeToOwnProcess.ps1 -ServiceName 'Appinfo', 'gpsvc', 'Schedule', 'SENS', 'SessionEnv', 'wuauserv'