首页 > 代码库 > IOCP大并发svchost.exe(NlaSvc服务)占满CPU问题分析

IOCP大并发svchost.exe(NlaSvc服务)占满CPU问题分析

症状:
     使用IOCP开发的SSLSpider(SSL证书扫描服务)运行一会后(4000并发),系统的一个svchost.exe一直满一个CPU内核(共4核)。
 

分析:
     此进程运行了4个服务:
停止WinRM、Dnscache都没用,停止NlaSvc超时了,应该是这货在作怪,Google。。。
真的是它!
别人遇到的,貌似没找到解决方法
http://www.tomshardware.com/forum/302313-28-usage-minutes-turned-urgent
 
暂时先停掉这个服务吧(并设置为手动启动),Network List Service 这个依赖它的服务也会停掉了。
 

2014年7月2日 问题找到了!

是打开过资源监视器,或者类似的工具(Process Explorer), 他们会使用NlaSvc服务(我已经设置为“手动”,但是还被启动了),“禁用”服务后问题不再出现。

此问题还出现在云监控等有大并发场合。具体可以观察CPU使用时间,来发现是否有占用CPU过多的进程。

说明
     NlaSvc(Network Location Awareness ):收集和存储网络的配置信息,并在此信息被修改时向程序发出通知。如果停止此服务,则配置信息可能不可用;如果禁用此服务,则显式依赖此服务的所有服务都将无法启动。
 
依赖它的服务:netprofm(Network List Service)
识别计算机已连接的网络,收集和存储这些网络的属性,并在更改这些属性时通知应用程序。