一些命令行程序在 PC 上似乎有点慢。我该如何排除故障?例如,在这台 PC 上,运行它需要半秒以上的时间git status
:
PS> for (;;) { Measure-Command { git status } | findstr TotalSeconds }
TotalSeconds : 0.7119173
TotalSeconds : 0.6040415
TotalSeconds : 0.6117674
TotalSeconds : 0.5779911
TotalSeconds : 0.6069439
...
(在另一台电脑上,上述命令运行时间为 0.05 秒。)我注意到其他几个命令也运行的时间有点长:
PS> for (;;) { Measure-Command { node --version } | findstr TotalSeconds }
TotalSeconds : 0.4630501
TotalSeconds : 0.3144418
TotalSeconds : 0.2842615
TotalSeconds : 0.2808537
(另一台 PC 在 0.02 秒内运行该程序。)
还有一个更好的措施:
PS> for (;;) { Measure-Command { npm --version } | findstr TotalSeconds }
TotalSeconds : 3.4839123
TotalSeconds : 3.1501913
TotalSeconds : 2.9817682
TotalSeconds : 3.0423125
当这些程序运行时,我发现 CPU 使用率突然上升,好像占用了 CPU 四个核心的 1/4。CPU 使用率仅在我调用的进程(即 Git.exe 或 Node.exe)中升高,在任何其他进程中均不升高。
我尝试禁用尽可能多的 Windows 服务,直到我的 PC 几乎无法执行任何操作,但我仍然得到与上述类似的时间。我已确保禁用防病毒软件、防火墙和 BeyondTrust,但问题仍然存在。我没有 ATI 显卡(仅限 Intel HD 520)。
无论我从 Powershell、cmd.exe 还是 bash 调用,时间都是相同的。
在安全模式下问题消失。
正常启动后,我尝试停止所有非必要的进程;但速度仍然缓慢。我尝试禁用所有非必要的 Windows 服务;但速度仍然缓慢。我尝试在设备管理器中禁用所有非必要的硬件;但速度仍然缓慢。
有人能建议下一步的故障排除步骤吗?我担心这些问题的原因也会拖慢其他应用程序的速度。
答案1
最后,确实是 Symantec Endpoint Protection。禁用服务似乎无法阻止该问题,但以下操作可以。运行此操作以确认它解决了该问题。
"%ProgramFiles(x86)%\Symantec\Symantec Endpoint Protection\smc.exe" -stop
然而,这让我失去了 Symantec Endpoint Protection。
可能有一种方法可以使用赛门铁克将某些程序列入白名单,但我不确定它是什么。
编辑:我们随后发现,真正的延迟来自应用程序和设备控制,而不是大部分 SEP。可以在底部的“设置”>“客户端管理”>“常规”中禁用此功能。
(甚至更深层次的是,应用程序和设备控制中只有一部分似乎有一个实验性的功能,它会导致每个进程启动时出现延迟。我不确定它是什么。)