2

我有一个新的 ASP.Net 4.0 Webform 应用程序。它是使用 Entity Framework 4.0 编写的,它使用 EntityDataSource 进行大约 90% 的数据访问(主要绑定到 ListView 和 DropDownList 控件)。

用户报告偶尔的 IE “冻结”。似乎正在发生的事情是在回发期间,IE 将完全变为白色,并且页面永远不会呈现。用户可以关闭 IE 并重新启动它,应用程序总是很好。

看来我可能遇到了资源问题。服务器 RAM、SQL RAM、SQL 数据库连接等。发生这种情况时,客户端 PC 或服务器上的事件日志中没有任何内容(除了今天的错误!)(似乎每天发生 1-3 次)随机用户)。

今天,我让一个用户等待它并得到下面的错误(它也在事件日志中)。我不确定这是其他人遇到的错误还是不相关的错误。问题是,我不在现场。我只能在晚上访问服务器,就像我说的那样,没有任何事件日志。我想过在 SQL 上安装 Spotlight(我以前用过,非常好)或其他一些 SQL 监控工具。首先,我虽然会在这里看到专家关于堆栈溢出的建议。

有什么建议吗?(除了不使用 EntityDataSource!哈哈)

哦,是的......这是我上面提到的那个错误:

“/”应用程序中的服务器错误。

超时已过。在操作完成之前超时时间已过或服务器没有响应。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:超时已过期。在操作完成之前超时时间已过或服务器没有响应。

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[SqlException (0x80131904): 超时。在操作完成之前超时时间已过或服务器没有响应。]

System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection)+404

System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +412

System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1363

System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +58

System.Data.SqlClient.SqlDataReader.get_MetaData() +118

System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6312385

System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔返回流,布尔异步)+6313986

System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +538

System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String 方法) +28

System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior 行为,字符串方法)+256

System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior 行为)+19

System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior 行为)+617

[EntityCommandExecutionException:执行命令定义时发生错误。有关详细信息,请参阅内部异常。]

System.Web.UI.WebControls.EntityDataSourceView.ExecuteSelect(DataSourceSelectArguments 参数)+1599

System.Web.UI.DataSourceView.Select(DataSourceSelectArguments 参数,DataSourceViewSelectCallback 回调)+28

System.Web.UI.WebControls.DataBoundControl.PerformSelect() +274

System.Web.UI.WebControls.ListView.PerformSelect() +124

System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +105

System.Web.UI.WebControls.ListView.CreateChildControls() +78

System.Web.UI.Control.EnsureChildControls() +182

System.Web.UI.Control.PreRenderRecursiveInternal() +60

System.Web.UI.Control.PreRenderRecursiveInternal() +222

System.Web.UI.Control.PreRenderRecursiveInternal() +222

System.Web.UI.Control.PreRenderRecursiveInternal() +222

System.Web.UI.Control.PreRenderRecursiveInternal() +222

System.Web.UI.Control.PreRenderRecursiveInternal() +222

System.Web.UI.Control.PreRenderRecursiveInternal() +222

System.Web.UI.Control.PreRenderRecursiveInternal() +222

System.Web.UI.Control.PreRenderRecursiveInternal() +222

System.Web.UI.Control.PreRenderRecursiveInternal() +222

System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)+4185

版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.1

4

1 回答 1

0

我的建议:

  • 查找这是否发生在随机页面或具体页面上
  • 尝试找出发生这种情况时有多少用户正在访问您的 Web 应用程序(性能计数器)
  • 监控 SQL 服务器 - 性能、读取,还检查可能阻止其他用户读取的长时间运行的事务
  • 在您的开发开发中,检查您的 EntityDataSource 返回的记录数——尤其是在您使用内置分页时。
于 2011-02-22T08:59:16.560 回答