内部诊断工具,第1部分:PSSDiag

来源:互联网 发布:win10解压rar软件 编辑:程序博客网 时间:2024/06/14 09:07
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

引言

在接下来的几个专题中,我将会介绍一些工具,Microsoft产品支持服务使用这些工具来排除故障并解决与SQLServer相关的复杂问题。这些工具最近已发布到网上,客户可以在支持事件环境以外使用它们。本月的专题主要是介绍PSSDiag,它是一个用于SQLServer的诊断信息收集工具。在以后的专题中,我将会论述关于Read80Trace和OStress的内容,另外可能还会谈及其他一两个方面的内容。

返回页首

PSSDiag

PSSDiag供Microsoft产品支持服务(PSS)用来收集诊断数据。它有两种主要类型:内部版本,通常发送给支持事件环境内的客户;外部版本,最近可从Microsoft上下载。两种版本都使用相同的代码生成,但是在外部功能、默认选项、预期使用等方面稍有不同。因为您可以免费下载外部版本,所以在本专题中我将主要论述外部版本的有关内容。

PSSDiag由两个主要组件组成:配置应用程序DiagConfig.exe和收集服务程序PSSDiag.exe。DiagConfig.exe是一个托管代码应用程序,它用于创建配置文件或项;PSSDiag.exe是一个本机代码服务应用程序,它将读取DiagConfig.exe创建的内容来确定要收集的诊断信息并确定从哪个(些)计算机中收集信息。PSSDiag.exe可收集所要求的信息并将其记录到指定的输出文件夹中,在此进程中可以将信息进行压缩(可选操作)。此输出结果随后可以上传给Microsoft或者由客户用于监控他们的服务器运行状况并排除服务器故障。

尽管此工具实际上可以被配置为收集各种类型的计算机中的诊断信息,但是默认情况下它被配置为收集与SQLServer相关的诊断信息。要从其他类型的计算机中收集诊断信息只需为收集程序提供一个特殊的启动参数即可,我将会在下一节中进行论述。

DiagConfig

DiagConfig开始时会提示输入目标计算机和诊断信息收集服务程序,如图1所示。


1DiagConfig连接对话框

 

目标计算机就是您要收集其诊断信息的计算机。它可以不是本地计算机,但必须安装了PSSDiag收集服务程序(通常会自动安装此程序;有关如何手动安装此程序的说明,请参阅安装或卸载收集服务程序一节)。

“诊断信息收集服务程序”项用于指定目标计算机上的收集服务程序名称。其默认设置为PSSDiag,但可以修改此设置(您可以在同一计算机上安装多个收集服务程序实例)。设置多个收集服务程序实例会非常有用,例如,可以设置一种连续运行的收集程序用于收集影响甚微的诊断信息;设置另一种专门在解决特定问题时运行的收集程序用于收集更具破坏性的诊断信息。您在此处指定的名称必须已在目标计算机上注册为收集服务程序,除非您连接的是本地计算机上的默认实例。同样,请参阅安装或卸载收集服务程序一节以获得详细信息。

由于具有从远程计算机上控制和配置收集服务程序的功能,因此您可以在单台计算机上对跨企业的多个服务器中的诊断信息收集进行集中管理。您甚至还可以在DiagConfig命令行指定目标计算机名称和收集服务程序名称(这些参数与位置相关,且不需要命令行开关;目标计算机名称在前,目标服务程序名称在后),从而越过“目标计算机”对话框,自动运行连接进程。这样使您可以在Windows资源管理器中创建到达目标计算机的快捷方式,并且仅通过单击相应的快捷方式就可以自动连接到这些计算机。

在提供了所需的连接信息后,DiagConfig就会显示出主配置屏幕。如图2所示:


2DiagConfig主配置屏幕

 

主配置界面分为四个部分:连接信息、计算机范围内的诊断信息、特定于实例的诊断信息以及说明/输出。以下将分别对每个部分进行说明。

连接信息

ConnectionInfo(连接信息)部分使您可以进一步详细说明指定给计算机上特定的SQLServer实例的目标计算机。此信息默认为一个星号(*),它将指示收集服务程序清点安装在目标计算机上的SQLServer实例,并同时从这些实例中收集信息。如果需要,您可以将此信息更改为目标计算机上的特定实例。还可以指定连接到目标计算机时使用的验证类型和使用SQLServer验证时的可选用户名。

计算机范围内的诊断信息

顾名思义,“计算机范围内的诊断信息”部分使您可以对计算机范围内包括的诊断信息收集进行配置,这些信息并非特定的SQLServer实例特有的。这些信息包括目标计算机的事件日志(系统、应用程序和)以及Perfmon/Sysmon日志。

您可以控制是否在收集程序启动和/或关闭时收集事件日志。而对于Perfmon日志,您可以配置收集的对象和计数器(树视图中的带有阴影的计数器对象表示它下面的部分而非全部Perfmon计数器被选中)、翻转文件大小以及采样间隔。此处显示的计数器列表实际是从一个文档中加载的(请参阅PerfmonTemplates子文件夹),您可以自定义此列表以满足需要。

关于Perfmon计数器,在此需要说明一点,即PSSDiag支持实例计数器的概念。这些计数器就是您要为计算机上的所有SQLServer实例收集的Perfmon计数器。这些计数器的文本中将会包含一个%s标记。此标记将由收集服务程序填充,并替换为目标计算机上的每个SQLServer实例的名称。它将使收集程序的操作就像您为各个SQLServer实例要求了相同的计数器一样。

另外要说明的一点是,PSSDiag支持在Perfmon对象实例中使用通配符。这些计数器中包含星号(*),用来代替计数器文本中的特定对象实例。这使您可以执行诸如为目标框中的所有进程收集给定的计数器或计数器集合等操作,而无需预先了解这些进程的内容。

特定于实例的诊断信息

“特定于实例的诊断信息”就是关于特定SQLServer实例的诊断信息。这些信息包括SQLDIAG报告、阻断故障排除输出以及事件探查器跟踪。

SQLDIAG是SQLServer附带的一个实用程序(请查看Binn文件夹),它可以拍摄特定于SQLServer实例的不同系统配置和故障排除信息(例如错误日志、sp_configure值等)的快照。与事件日志相同,PSSDiag可以被配置为在收集程序启动和/或关闭时收集SQLDIAG报告。

PSSDiag还可以自动运行,并循环进行Microsoft用于分析阻断问题的标准存储过程(请参阅HowtomonitorSQLServer2000blocking)。您可以配置传入此过程的参数和应用的采样间隔。

在DiagConfig主屏幕中可以配置的最后一种特定于实例的诊断信息为事件探查器跟踪。它显示出了SQL事件探查器界面的简化版本,使您可以选择要收集的跟踪事件(带有阴影的跟踪事件表示它下面的部分而非全部跟踪事件被选中)、要使用的跟踪模板(这些模板是位于TraceTemplates子文件夹中的可自定义的XML文档)以及要采用的翻转文件大小。

说明/输出

主配置屏幕的最后一部分由两部分组成:一组基本说明,用于说明如何开始使用此工具;一个输出窗口,一旦启动该窗口,它就会显示收集服务程序的控制台输出结果。此窗口实际上就是目标计算机的事件日志视图,事件日志经过滤从而只显示出那些与收集服务程序直接相关的事件,以及该程序自开始收集数据以来写入日志的输出结果。

开始收集

配置完要收集的诊断信息后,请单击Start(开始)开始进行收集。然后,DiagConfig将会显示出一个启动参数对话框,您可以使用此对话框针对您要启动的诊断信息收集来提供参数。如图3所示:


3DiagConfig启动参数对话框

 

您可以在此为收集服务程序指定许多启动参数。以下将对它们分别进行说明。

模式

Mode(模式)设置使您可以指定是从已安装SQLServer(并且您可以与其连接)的计算机上进行收集,还是从未安装SQLServer的计算机上进行收集。如果选择了SQLServer模式,只要确定收集程序可以与目标SQLServer实例连接并且是该实例内的sysadmin组成员,收集程序就会启动。如果这些检查中的任一项失败,则将忽略此实例,而不对其进行诊断信息收集。这意味着如果您接受默认目标实例名称*(如上所述,它会使收集程序清点安装在目标计算机上的SQLServer实例),将不会从收集时没有运行的或存在其他连接问题的任何实例中收集诊断信息。

如果设置为Generic(普通)模式,将不会进行SQLServer连接检查。如果您选择了特定于SQLServer的诊断信息(例如事件探查器跟踪),收集服务程序仍然会尝试连接这些信息,但是如果在试图到达服务器时发生了连接问题,或者您缺乏对服务器的足够权限,那么就可能无法连接。如果从非SQLServer计算机中收集诊断信息,此模式显然非常有用。它还可以用于从存在安装问题或连接问题的SQLServer计算机(例如,您可能需要从某台计算机上收集Perfmon日志,而该计算机由于某种原因使您无法连接到SQLServer)中收集有限的诊断信息。

输出文件夹

我想您一定猜到了,OutputFolder(输出文件夹)用于指定收集程序将其所有诊断信息输出到其中的文件夹。此文件夹必须已存在于目标计算机上,或者可以创建(这意味着如果它是一个子文件夹,那么其父文件夹必须已经存在)。如果未指定此文件夹,它就默认为收集程序启动目录下名为OUTPUT的子文件夹。此文件夹所在的驱动器应当有足够的空间,最好不由SQLServer使用,无论以何种方式(例如用于数据或日志文件)。由于具体需要多少空间取决于您所收集的诊断信息和目标计算机上正在发生的活动数量,因此此工具无法预先了解您是否有足够的空间。

您还可以控制收集服务程序在启动时如何管理现有的输出文件夹。您可以指示程序完全覆盖该文件夹的内容(默认设置),也可以在开始新的收集之前清除或重命名该文件夹。重命名的输出文件夹的格式为Output_00001、Output_00002等,数字最大的文件夹就是最近重命名的文件夹。

压缩

Compression(压缩)设置控制着收集服务程序是否压缩收集到的诊断信息文件,或者在收集时压缩(NTFS),或者在关闭时压缩(ZIP)。如果您选择NTFS压缩,那么收集服务程序就会启动一个低优先级后台线程,此线程将使用NTFS压缩(假设输出驱动器为NTFS分区)来压缩收集到的诊断信息文件。此线程每隔30秒唤醒一次,并检查是否存在尚未压缩的新文件。如果您选择ZIP压缩,那么收集程序就会在关闭时将输出文件夹中的文件压缩到单个Zip文件中(默认设置为PSSDiag.Zip)。程序会先将所有内部诊断信息文件(这些文件是特定于PSSDiag的,而非您所要求的那些文件,它们具有##前缀)添加到一个名为PSSDiagInternal.Zip的Zip文件中,然后将此Zip文件连同您所要求的诊断信息的所有输出文件,一起添加到一个名为PSSDiag.Zip的文件中(此文件的名称取决于收集服务程序的名称,如上所述,此文件名可以被更改)。

日程安排

Scheduling(日程安排)部分使您可以安排收集服务程序如何以及何时运行和关闭。您可以配置StartDate/Time(开始日期/时间)和EndDate/Time(结束日期/时间),以及收集服务程序是否应当自动重新启动和/或仅收集数据的快照并自动关闭。您所指定的时间可以是相对时间也可以是绝对时间,还可以将两者结合使用(例如,您可以将启动时间设置为绝对时间,而将关闭时间设置为相对时间)。相对结束时间总是相对于开始时间而非当前时间,而相对开始时间总是相对于当前时间。如果您指定一个已过去的绝对日期/时间,收集程序会自动调整其日期,以使该程序在将来发生。根据指定的时间和当前时间,程序将会在今天或明天的指定时间发生。

在开始收集数据之前,收集程序在给定的时间或时段内等待传递数据时绝对不会占用主机上的CPU资源。它会通知Windows需要唤醒它的时间,然后开始休眠,直到Windows唤醒它。到达开始时间时,Windows会发信号通知收集程序开始收集数据的时间到了,收集程序就会照常开始收集诊断信息。

选择RunContinuously(不间断运行)选项将在收集程序由于到达结束时间而关闭时通知其自动重新启动。这可以用于每日运行特定的诊断信息收集程序。由于您可以指定相对时间和没有指定日期的时间,因此这一功能就使您可以在每天的一段时间内(如早上9点到下午5点之间)收集相同的诊断数据。下午5点关闭后,收集服务程序将会自动重新启动,并等到第二天的早上9点再次开始收集数据。

其他

尽管在默认情况下PSSDiag会运行一个存储过程来收集SQLDIAG报告,但是用户仍然可以根据需要改为使用SQLDIAG.exe。需要注意的一个特殊情况是,PSSDiag默认使用的存储过程收集的数据与SQLDIAG.exe(实际上是一个数据父集)收集的数据完全相同,并且数据的格式也相同。两者之间唯一显著的区别是SQLDIAG.exe还会收集MSInfo32/WinMsd报告,而PSSDiag使用的存储过程则不会。这是由于PSSDiag可以被配置为通过其自定义的诊断功能来单独收集MSInfo32/WinMsd,我们将会在下面对此进行论述。通过单独收集MSInfo32/WinMsd的功能,可以将该报告与SQLDIAG报告的存储过程一同收集。这样将会提高整体性能并缩短收集报告所需的时间。考虑到收集MSInfo32/WinMsd需要大量时间,因此保留默认设置要比使用SQLDIAG.exe收集该报告具有明显的优势。

一旦您单击了OK(确定),您所指定的配置信息和启动参数就会被写入目标计算机的注册表(XML格式),收集服务程序也将被启动。如果从正在运行配置应用程序的计算机上进行收集,DiagConfig还会在尝试启动收集服务之前自动为您注册此服务。

当收集服务程序启动后,DiagConfig将会在GUI说明/输出部分Output(输出)页显示出其输出结果。如图4所示:


4DiagConfig显示PSSDiag收集服务程序的输出结果。

 

此输出结果显示会每隔5秒更新一次,并且所显示的目标计算机的应用程序事件日志,只限于收集服务程序在该次运行过程中收集的部分。您也可以使用Windows事件查看器工具来查看相同的信息,但是您将会发现使用DiagConfig来查看会容易得多。

当收集服务程序正在运行时,您将无法更改任何配置或启动参数。如果您希望变更要收集的诊断信息,请停止并重新启动收集服务程序。

请记住,在收集服务程序运行时您可以将DiagConfig最小化甚至完全退出它。DiagConfig会创建一个任务栏图标,这样您就可以根据需要通过任务栏来控制收集服务程序。

请注意,您并不一定要使用DiagConfig来启动和停止收集服务程序。您还可以使用Windows的服务控制管理器应用程序或收集程序附带的DiagControl命令文件。如果您通过DiagConfig启动收集服务程序,然后通过其他某种机制来停止该程序,DiagConfig将会检测到这一情况,并在其显示出的用户界面中反映出相应的状态和输出结果。由于某些原因(在此不深入探究),您不应当使用服务控制管理器应用程序来停止收集服务程序。而应当使用DiagConfig或DiagControl命令文件。

1

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击