SQL CPU高 - SqlConnection未关闭 - 相关?

时间:2011-01-27 17:03:27

标签: c# sql-server performance sqlconnection

我有一个基于ASP.net的应用程序。

SQL Server框上的CPU始终为~90 - 100%

我正在处理很多不合适的查询,但是,查看前一个编码器的代码,他似乎从未关闭(或处置)SqlConnection

当我运行以下查询时,我得到了大约450个“正在等待命令”的连接

  

SELECT Count(*)FROM   MASTER.DBO.SYSPROCESSES WHERE   DB_NAME(DBID)='CroCMS'和DBID!= 0   AND cmd ='AWAITING COMMAND'

这可能会导致问题吗?

我读过这篇文章似乎与此有关: http://www.pythian.com/news/1270/sql-server-understanding-and-controlling-connection-pooling-fragmentation/

我们也会获得大量超时,特别是在启用复制时。 我不确定这是否相关..暂时禁用复制(事务性),似乎没问题。 (此服务器是我们办公室数据库服务器的订户)

是否会处理SQL连接对象帮助?

2 个答案:

答案 0 :(得分:2)

是的,处理它们。否则暂时忽略它们。可能这个池很大,因为语句很慢。我会更建议:

  • 修复陈述。
  • 检查应用程序是否仅使用一个连接PER REQUEST(即不能同时打开多个连接)。

如果在优化SQL后问题没有改善 - 您可以重新访问池。

答案 1 :(得分:1)

完成后,应始终处置命令对象。这样可以更好地使用连接池。

easist是使用using语句。

using (
                var sqlCommand = new SqlCommand(
                    "storedprocname",
                    new SqlConnection("connectionstring"))
                    { CommandType = CommandType.StoredProcedure })
            {
          // do what you should.. setting params executing etc etc. 

}