ASP.Net中100%的CPU使用率

ASP.Net中100%的CPU使用率,asp.net,linq-to-sql,cpu-usage,Asp.net,Linq To Sql,Cpu Usage,在部署了新版本的混合asp.net web应用程序Framework 4.5.1、IIS 7.5之后,我们立即注意到CPU使用率达到了100% 我使用DebugDiag进行CPU峰值调试,如本文所述: 我现在有了我的报告,每个被确定为高CPU使用率问题的线程都是这样的,线程数不同: Thread 1576 - .SNIReadSyncOverAsync(SNI_ConnWrapper*, SNI_Packet**, Int32) 我猜这意味着罪魁祸首是LINQ到SQL的调用。该应用程序使用了

在部署了新版本的混合asp.net web应用程序Framework 4.5.1、IIS 7.5之后,我们立即注意到CPU使用率达到了100%

我使用DebugDiag进行CPU峰值调试,如本文所述:

我现在有了我的报告,每个被确定为高CPU使用率问题的线程都是这样的,线程数不同:

Thread 1576 - .SNIReadSyncOverAsync(SNI_ConnWrapper*, SNI_Packet**, Int32) 
我猜这意味着罪魁祸首是LINQ到SQL的调用。该应用程序使用了大量LINQtoSQL。不幸的是,DebugDiag报告没有给出导致困难的LINQ到SQL调用的线索


有没有办法使用DebugDiag报告中的信息来识别导致高CPU使用率的SQL Server调用?

我们从未找到这个问题的答案。我希望得到一个答案,告诉我们可以向performance monitor数据收集中添加什么,以查看CPU线程传递的实际SQL

取而代之的是,我们运行SQL Server performance monitor,经过适当过滤,只覆盖来自web应用程序的流量,运行了大约一分钟。我们将收集到的所有数据转储到一个表中,然后检查语句的开始和结束时间,以确定占用过多时间的语句。从这组缓慢的语句中,我们识别出了导致CPU崩溃的SQL调用

奇怪的是,SQL调用(选择内联表值函数的结果)需要2-3秒才能完成,但大部分时间都是在SQL server断开连接(sp_reset_connection)时完成的。调用本身在不到一毫秒的时间内返回,当我们在SSMS中使用相同的参数执行相同的函数时,调用将在不到一毫秒的时间内执行。但是,这将是一个单独问题的主题。

这可能会有所帮助:。建议的解决方案是重建VM。