理解 SQL Profiler 跟踪

4

我目前在Win2k8 Server上的DotNetNuke SQL Server 2005 Express网站上遇到了一些问题。它大部分时间都运行顺畅,但偶尔(每小时一两次)会变得非常缓慢-从用户角度来看,就像发生了某种死锁。

为了尝试找出问题所在,我已经使用SQL Profiler对SQL Express数据库进行了分析。

通过查看结果,我有以下一些具体问题:

  1. SQL跟踪显示每个RPC:Completed都有一个Audit Logon和Audit Logoff - 这是否意味着连接池未正常工作?

  2. 当我在Performance Monitor中查看“.NET CLR Data”时,没有任何“SQL client”计数器实例 - 这只是SQL Express缺乏功能的问题还是表明我配置错了什么?

  3. 当发生缓慢时运行的查询似乎并不异常-它们在其他时间运行得很快。您能建议哪些其他perfmon计数器或其他跟踪/日志文件作为我进一步调查的有用工具吗?


谢谢回答。从今天的结果来看...影响性能最大的单个因素似乎是可用RAM - 关闭MMC应用程序(ServerManager)效果特别好。也许这只是一个Win2k资源问题吗? - Stuart
4个回答

3
直接跳到“Profiler”可能是错误的第一步。首先,尝试检查服务器上的Perfmon统计数据。我这里有一个在线教程:http://www.brentozar.com/perfmon。开始捕获这些指标,然后在遇到其中一次减慢的情况之后停止收集。查看那段时间内的性能指标,瓶颈就会出现。如果您想将Perfmon的csv输出发送给我,请发送至brento@brentozar.com,我可以告诉您发生了什么。
您可能仍然需要运行Profiler,但我会先排除操作系统和硬件问题。此外,只是一个想法 - 您是否已经检查了服务器的系统和应用程序事件日志,以确保在那些时间没有发生任何事情?我曾经看到过例子,如:防病毒客户端太频繁下载新补丁,并在每次更新后进行轻量级扫描。

在查看分析器指标之后,我建议使用 Perfmon。但是,在这两者之前,我会先查看任务管理器,只是为了查看内存是否运行不足并且 RAM 是否正在交换到磁盘。 - djangofan
首先查看分析器的问题在于你不知道硬件瓶颈在哪里,因此也不知道应该首先专注于哪些查询进行故障排除。你可能有一些恶劣的查询 - 比如说,UDF占用了大量CPU - 但如果服务器有大量的空闲CPU,并且遇到严重的IO问题,那么你需要知道这一点,以便首先专注于IO密集型查询。 - Brent Ozar

1

我的“蜘蛛侦测器”告诉我你的SQL Server可能存在阻塞问题。请参考this article来帮助您监控服务器上的阻塞情况以检查是否为其原因。

如果您认为问题可能与性能有关,想要查看硬件瓶颈是什么,那么您应该使用perfmon收集一些CPU、磁盘和内存统计信息,然后将它们与您的分析器跟踪结果相关联,以查看慢反应是否有关。


0
  1. 不行
  2. 没有任何问题...这表明您没有使用嵌入在SQL Server中的.NET功能。
  3. 您可以查看http://www.xsqlsoftware.com/Product/xSQL_Profiler.aspx以获取更详细的分析结果。它具有按时间或CPU显示顶级查询的报告(不是单个查询,而是所有单个查询的总和)。

0

需要检查的其他事项:

  • 确保您的数据文件或日志文件未自动扩展。

  • 确保您的防病毒软件设置为忽略 SQL 数据和日志文件。

  • 在查看分析器输出时,请确保检查在目标之前完成的查询,它们可能会造成阻塞。

  • 确保已关闭数据库上的自动关闭功能;重新打开需要一些时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接