我有一台 Amazon EC2 Windows Server 2012 RTM,/w MSSQL 2012。我终于托管了我的 Web 应用程序,但它运行缓慢。我可以确认 IIS 没有造成问题。
我注意到每隔 3-4 秒我的 CPU 就会从 10% 跳到 27%-40%。我希望这就是问题的原因。
这基本上是一个新实例,我几乎没有安装任何东西,(只有 MSSQL、IIS、Filezilla 服务器)我已经卸载了所有这些,但都不是原因。
导致此问题的 PID 为 840,svchost.exe (netsvcs),在 tasklist /svc 之后包含:
certpropsvc
gpsvc
I KEEXT
iphlpsvc
lanmanserver
profsvc
schedule
sens
sessionenv
shellhwdeteciton
themes
winmgmt
我如何确定是哪一个导致了问题?其中一个比另一个更可能出现吗?
答案1
我猜:
大概是 iphlpsvc 导致了这个问题。这是服务描述:
“使用 IPv6 转换技术(6to4、ISATAP、端口代理和 Teredo)和 IP-HTTPS 提供隧道连接。如果停止此服务,计算机将无法获得这些技术提供的增强连接优势。”
如果这项服务存在问题,那么大概可能是因为您的计算机属于某些奇怪的网络配置,iphlpsvc 无法轻松处理,从而导致 CPU 峰值。我认为是 iphlpsvc 的原因是因为众所周知,当该服务处于无法很好处理的情况下时,会导致系统问题。请参阅此线程,了解 iphlpsvc 的各种问题(以及各种解决方案):http://social.technet.microsoft.com/Forums/en/windowsserver2008r2general/thread/ba9f0968-9275-434f-9e40-ec0621c3a35a
如果我的猜测是错误的:
如果 iphlpsvc 确实不是问题,那么好消息是您已经完成了不明显的故障排除部分,即找出有问题的进程(netsvcs winsvc.exe)托管的服务。
从这里开始,就是一个消除过程。逐个禁用每个服务,然后检查 CPU 使用率,找出导致问题的服务,这样你就能找到根本原因。
您有 12 个托管服务。在我的特定、运行良好的机器上,我有 15 个:
AeLookupSvc
Appinfo
BITS
Browser
EapHost
iphlpsvc
LanmanServer
MMCSS
ProfSvc
Schedule
SENS
ShellHWDetection
Themes
Winmgmt
wuauserv
通过查看常见的服务并找到每个系统所特有的服务,我们可以观察到,您的 netsvcs 映像中运行了以下五个托管服务,而我没有:
certpropsvc
gpsvc
I KEEXT
sessionenv
shellhwdeteciton
因此,这些可能是首先尝试禁用的嫌疑对象。无论如何,这都将是一个排除过程。其中一个服务导致 netsvcs CPU 激增!
现在,这是否最终导致您的 webapp 运行缓慢又是另一回事,但是,您的假设是 netsvcs 目前听起来是合理的。