我有连接到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查询有关。例如:在普通工作期间,一些用户运行长时间运行报告。它可能导致服务器冻结。
这种行为可能是什么原因?我有什么可以诊断的?