Visual Studio ASP.NET调试导致SQL Server在空闲时CPU占用率高

6
我有一个使用SQL Server 2016在Windows Server 2012上的ASP.NET 4项目。这是一个只有我作为用户的开发环境。当我在IIS8中运行该项目并使用Visual Studio 2015的Debug ->“Attach to Process”时,它可以成功连接到我的w3wp进程。然而,在任务管理器中,我立即看到“SQL Server Windows NT - 64位”进程的CPU使用率跳到>20%,即使没有任何查询也是如此。我重复了几次,这肯定与VS调试有关。当我停止调试时,它会在几秒钟内返回到0%,但然后又跳回20%并保持这个状态。
问题在于,在这种状态下,即使是微不足道的SQL查询也非常缓慢或产生超时。因此,调试甚至打开项目的任何基于数据库的页面都变得几乎不可能。
缓解SQL Server和使网站再次可用的唯一方法是关闭Visual Studio中的整个解决方案。
Visual Studio是否在一般调试开始时启动了一些(不需要的!)隐藏SQL调试?如果是这样,我该如何禁用它?

不,这是SQL EXPRESS 2016的常规安装。 - AndreasS
所有的免费版本也用于收集遥测数据以改善产品,这可能是在没有查询时导致 CPU 升高的原因之一。 - TheGameiswar
@TheGameiswar:收集遥测数据以至于使产品完全无法使用?即使是免费产品,也很难相信... - AndreasS
你可以从Adam Machanic运行sp_who2并将其记录到表中以进行进一步分析。 - TheGameiswar
1
@Jason:感谢你的建议。由于我给机器添加了更多的内存,现在问题已经消失了。运行VS-Debugging占用了大量的内存,导致SQL Server显然进行了一些永久交换……而SQL Server 2016似乎比它的前辈更加敏感。所有症状都指向了一个性能问题,但实际上是一个内存问题。对我而言,问题已得到解决。 - AndreasS
显示剩余7条评论
1个回答

0

以下是根据上述评论编译的答案...

问题出在系统内存不足。这导致使用了大量缓慢的虚拟内存,使系统停止运行。这是一个有效的答案,如果其他人遇到此问题,应该作为参考。

SQL Server“应该”将内存返回给操作系统,但实际上它表现得像一个贪婪的小妖精。我总是将其设置为始终保留至少2GB可用于操作系统。上述问题是由于内存不足引起的。限制其他程序的内存访问或增加可用的系统内存应该可以解决您的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接