Windows Server 2008性能监测
Windows Server 2008 新增了名为可靠性与性能监测器的MMC插件。它整合了系统性能日志与警报、服务器性能优化建议、系统监测器等多个工具,这些工具在此前的Windows Server 2003中是需要单独执行的。可靠性与性能监测器插件的主要功能有:系统资源视图、系统数据搜集组、系统诊断报表等。
在系统资源视图中并列显示了当前服务器CPU、磁盘、网络及内存的性能曲线图。这些曲线图动态反映了系统资源的实时利用状况。在这一组曲线图的下方,我们可以展开查看各进程的资源利用状况。在此前的Windows版本中,进程级别的实时性能数据十分有限,并且仅能通过Windows任务管理器查看。
与Windows Server 2003一样,我们可以通过键入命令行指令“perfmon”来打开Windows Server 2008 可靠性与性能监测器。其默认初始界面即为系统资源视图,如图1所示:
图1 Windows Server 2008可靠性与性能监测器系统资源视图系统数据搜集组是Windows Server 2008在系统性能监测方面新增的一个重要功能。通过它,用户可以把相关的性能数据整合在一起进行搜集,这样就可以适应各种不同的性能监测需要。我们还可以设定数据搜集的时间计划,回放已搜集的性能日志,保存搜集模版用于监测其它服务器等。
如图2、3所示,我可以通过向导创建系统数据搜集组,也可以把性能监测器的当前配置结果保存为新的系统数据搜集组。
图2 Windows Server 2008系统数据搜集组向导
图3 基于Windows Server 2008性能监测器当前配置新建系统数据搜集组
Windows Server 2008 可靠性与性能监测器整合了服务器性能优化建议工具的诊断报表功能(在Windows Server 2003中,优化建议工具是需要单独下载的)。通过诊断报表,可以快速显示任一性能数据搜集组的日志内容;通过其缩放功能,可以方便地查看任意时段的性能曲线,从而准确评估优化措施对性能的实际影响。
Windows Server 2008系统诊断报表的界面与Windows Server 2003性能监测器的系统性能监视界面类似。值得一提的是,打开Windows Server 2008的诊断报表后,我们可以选定时间段进行缩放以便更仔细的查看性能数据。另外,诊断报表还提供了多种数据展现形式用以全面分析性能数据日志。如图4、5所示。
图4 Windows Server 2008性能诊断报表的时间窗缩放功能
图5 Windows Server 2008性能诊断报表的多种数据展现多样性
SQL Server 2008性能监测对象
SQL Server 2008提供了丰富的性能监测对象及其计数器。在一台服务器上,同一个性能对象可以有多个实例,例如Databases对象必须与某个具体的数据库实例相关联。对于默认数据库实例,其性能计数器名称的前缀为SQL Server:<对象名称>;对于命名数据库实例,其性能计数器名称的前缀为MSSQL$<实例名称>:<对象名称>。另外,某些性能对象只能有一个实例,例如MemoryManager。
以下针对Windows Server 2008数据库环境的主要性能瓶颈介绍常用的性能计数器,并说明其具体含义。
• CPU性能瓶颈
性能监测器是确定CPU性能瓶颈最简便的工具:如果“Processor:% Processor Time”计数器持续高于80%,则表明此CPU负荷过高,它很可能是系统性能瓶颈所在,可以考虑升级CPU。
• SQL语句的重新编译
过度的SQL语句编译或重新编译也会降低数据库查询的响应性能。用户可以通过SQL Server 2008的性能计数器来监测并比较查询编译与查询请求的数量。理想情况下,前者数量应远远少于后者。在性能监测器中,前者对应于SQL Server: SQL Statistics: SQL Recompilations/sec及SQL Server: SQL Statistics: SQL Compilations/sec
,后者对应于SQL Server: SQL Statistics: Batch Requests/sec。如果SQL编译相对于用户查询过多的话,首先应确定用户是否提交了过多的随机查询,然后再考虑CPU等其他可能的性能瓶颈。
• SQL Server临时库(tempdb)瓶颈
大量使用或清除临时表、表变量会导致tempdb的过度使用,从而降低系统性能。在Windows 2008 性能监测器中,有关这方面常用的SQL Server 2008性能计数器有:
• SQL Server:Access MethodsWorkfiles Created /Sec
• SQL Server:Access MethodsWorktables Created /Sec
• SQL Server:Access MethodsMixed Page Allocations /Sec
• SQL Server:General StatisticsTemp Tables Created /Sec
• SQL Server:General StatisticsTemp Tables for destruction
• 游标(Cursor)性能瓶颈
在Windows Server 2008 性能监测器中,有关SQL Server 2008游标性能监测的常用计数器为:SQL Server:Cursor Manager By Type – Cursor Requests/Sec。通过它,我们可以知道数据库中游标执行的情况。如果由于大量小批量游标读取而导致Windows 2008数据库服务器的CPU利用率过高,则此计数器通常会显示为每秒数百次的游标操作。此外,SQL Server 2008未提供关于游标缓存大小的计数器。
综上所述,我们可以通过Windows Server 2008的可靠性与性能监测器来对SQL Server 2008的性能计数器进行检测。根据需要组合性能计数器,保存为数据搜集组,在设定的时间执行,然后通过性能诊断报表查看、分析。
有关SQL Server 2008性能计数器的更多信息,请参考微软官方文档http://msdn.microsoft.com/en-us/library/ms190382.aspx)。
SQL Server 2008管理数据仓库
与Windows Server 2008的性能数据搜集组类似,SQL Server 2008也提供了新的数据库性能搜集与分析工具。它主要搜集4大类性能数据,它们涉及T-SQL查询相关数据、SQL Server系统追踪(SQL Trace)数据、性能计数器数据以及查询处理活动相关的数据。它们有助于以下系统性能状况的评估、管理规划及性能优化:
• 磁盘利用状况:搜集SQL Server数据库级的磁盘利用数据,通过它们来帮助系统管理员了解不同数据库对物理磁盘的占用情况,做好磁盘空间的规划;
• 服务器活动:搜集SQL Server安装实例级的系统资源利用数据,如CPU、内存、I/O设备等。这些数据有助于系统管理员监测近期或长期的系统资源利用趋势,从中发现潜在资源利用瓶颈。这些信息同样可用于管理员的系统资源规划;
• 查询统计操作:搜集SQL语句级的查询统计信息,包含查询语句及其执行计划。这些数据有助于系统管理员确认占用资源最多的查询语句,从而有针对性地进行查询性能优化。
这些性能数据是通过SSIS任务包来搜集的。这些任务包可以手动执行,也可以设置为定时或周期性执行。搜集的数据被存入专用的SQL Server数据仓库,它被称为SQL Server管理数据仓库,简称MDW。某个MDW可用于保存来自多个SQL Server安装实例的性能数据。被检测的目标数据库服务器可以位于远端,性能数据通过其上定时执行的SSIS任务包传入MDW。为保证搜集效率,数据搜集任务包可以把所搜集的数据存入目标服务器的临时文件中保存,等到定时上传时刻再传入MDW。所搜集的性能数据通过预先设计的SQL Server报表在SQL Server 2008管理器(SSMS)中查看,用于性能分析。我们不仅可以设定数据搜集或上传的时间间隔,还可以根据需要自定义所需搜集的性能数据集以及性能报表。