Sql Server Profiler 跟踪在 Web 应用程序中给出超时

Posted

技术标签:

【中文标题】Sql Server Profiler 跟踪在 Web 应用程序中给出超时【英文标题】:Sql Server Profiler trace gives timeout in webapplication 【发布时间】:2010-07-03 06:24:36 【问题描述】:

我正在尝试使用 Sql Server Profiler 对在 Visual Studio 开发服务器中运行的 Asp.NET 网站应用程序运行跟踪。

但是,无论何时运行跟踪,来自 Web 应用程序的所有 db 请求都会失败并给我错误消息:

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

如果我停止跟踪,Web 应用程序将再次运行。

对此的任何意见表示赞赏。

【问题讨论】:

在这种情况发生时探查器是否成功捕获事件?您使用的是哪个版本的 SQL Server? 不,没有捕获任何内容。我在 SQL Server 2008 上。 我自己从来没有遇到过这个问题。听起来很奇怪。使用扩展事件而不是 Profiler 进行跟踪是否有更好的运气? (如果您在此答案之前没有使用过此功能,可能会帮助您入门***.com/questions/3094735/…) @Martin Hm... 在我走那条路之前,您认为这可能与数据库允许的最大并发连接数有关吗? (认为​​它在我的开发机器上意外设置为 1)。我试图用谷歌搜索,但找不到关于如何检查或更改该值/设置的直接答案...... 要检查管理工作室中的设置,右键单击该 SQL Server 实例的根节点,菜单上的属性,然后弹出对话框中的连接选项卡。 【参考方案1】:

您只需要在调试时增加 sql 连接上的 CommandTimeout 以及应用程序池超时值。

【讨论】:

是的,更改 CommandTimeout 似乎可以解决问题。由于我使用的是 asp.net 成员资格和角色提供程序,因此我也必须在 web.config 文件中的这些元素上设置 commandTimeout 属性。【参考方案2】:

一旦你解决了分析器超时问题,你应该考虑调整你的数据库(如果你还没有,虽然听起来不像)。

我最近遇到了类似的问题,结果是由于某些查询/语句的高读取导致 IO 阻塞。让分析器在已经很慢的数据库上运行是很困难的。我们不得不在 10 分钟的时间内以较安静的时间运行分析器,尽管这无助于确定最重负载时的最大问题。

一旦我们让分析器捕获数据(在 sql server 2005 上)并实施数据库优化顾问 (DTA) 推荐的索引和统计信息,数据库就会再次以预期的性能水平运行。

我建议你阅读这本关于 sql server profiler 的免费电子书......

http://www.red-gate.com/products/SQL_Response/offers/mastering_sql_profiler_ebook.htm

它详细说明了如何运行轻量级跟踪,这将有助于 DTA 推荐索引和统计信息,从而提高数据库的性能,并识别可能位于代码中的一些运行缓慢的查询。

您正在运行的跟踪可能会使您的数据库超出边缘,因此在 10-20 分钟的部分中运行它可能更可行。

如果您有 IO 阻塞问题,这通常会影响整个 sql 服务器,并且管理工作室有时会看起来没有响应。

【讨论】:

似乎我必须查看那本书才能真正了解我应该如何在生产中进行分析,因为首先进行分析的原因是做 DTA 的东西。感谢您的意见。【参考方案3】:

您是否有可能意外陷入单用户模式?

试试这个:

ALTER DATABASE [数据库名称] SET MULTI_USER;

【讨论】:

以上是关于Sql Server Profiler 跟踪在 Web 应用程序中给出超时的主要内容,如果未能解决你的问题,请参考以下文章

sql server profiler 是啥文件

sql server 2012 profiler打开2016的profiler

如何使用SQL Server Profiler跟踪数据库

怎样在sql server profiler跟踪时只显示自己关心的内容

如何设置跟踪定义默认设置 (SQL Server Profiler)

Sql Server Profiler 跟踪在 Web 应用程序中给出超时