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 2012 profiler打开2016的profiler
怎样在sql server profiler跟踪时只显示自己关心的内容