运行长Sql查询时应用程序冻结

时间:2015-08-14 09:26:46

标签: c# sql-server wcf

我有连接到Sql Server数据库的应用程序服务器,并通过WCF将查询结果返回给客户端应用程序。大多数代码都是这样的:

using(SqlConnection sqlConnection = GetConnectionProvider().NewConnection())
{
    SqlCommand sqlCommand = new SqlCommand(data.SelectStoredProcedureName,     sqlConnection);
    sqlCommand.CommandType = CommandType.StoredProcedure;
    sqlCommand.CommandTimeout = 600;

  ... add params

    using (SqlDataReader sqlReader = sqlCommand.ExecuteReader())
    {
      ... fill data
    }

    return serializedData;                
}
<99>在99.99%的案例中它运作良好但在极少数情况下应用程序开始工作得非常慢。平均响应时间为13毫秒。之后,冻结响应时间增加到300-400毫秒。应用程序开始使用1 GB内存和100%cpu使用率。

我不确定,但它可能与运行长sql查询有关。例如:在普通工作期间,一些用户运行长时间运行报告。它可能导致服务器冻结。

这种行为可能是什么原因?我有什么可以诊断的?

0 个答案:

没有答案