对存储性能进行监视和故障排除

本主题列出了一些性能计数器,我们建议您使用它们来监视在 Microsoft Office SharePoint Server 2007 环境中运行的 SQL Server 数据库的性能。此外,还列出了每个计数器的近似运行状况值。

有关如何监视性能和使用性能计数器的详细信息,请参阅监视性能 (https://go.microsoft.com/fwlink/?linkid=105584&clcid=0x804)。

要监视的物理服务器计数器

监视以下计数器以确保服务器运行正常:

  • Processor: % Processor Time: _Total   此计数器显示处理器执行应用程序或非“空闲”操作系统进程的时间百分比。在运行 SQL Server 的计算机上,此计数器的值应保持在 50% 到 75% 之间。如果进行固定重载,则应调查是否有异常进程活动或服务器是否需要额外的 CPU。

  • System: Processor Queue Length   此计数器显示处理器队列中的线程数。监视此计数器,确保其值小于 CPU 内核数目的两倍。

  • Memory: Available Mbytes   此计数器显示对正在计算机上运行的进程可用的物理内存量(以 MB 为单位)。监视此计数器,确保将该可用物理内存量至少保持在可用物理 RAM 总量的 20% 这一级别。

  • Memory: Pages/sec   此计数器显示在磁盘中读取或写入页面的速率以解析硬件页面错误。监视此计数器,确保其值保持在 100 以下。

有关详细信息和内存的故障排除方法,请参阅 SQL Server 2005 监视内存使用率 (https://go.microsoft.com/fwlink/?linkid=105585&clcid=0x804)。

要监视的磁盘计数器

监视以下计数器以确保磁盘运行正常。请注意,以下值表示在一段时间内测量的值,而不是在某个突发高峰期间产生的值,也不是通过单次测量获得的值。

  • Physical Disk: % Disk Time: DataDrive   此计数器显示所选磁盘驱动器处理读取或写入请求所经过的时间的百分比。监视此计数器,确保其值小于磁盘数的两倍。

  • Logical Disk: Disk Transfers/sec   此计数器显示在磁盘上执行读取和写入操作的速率。使用此计数器可监视增长趋势并进行适当地预测。

  • Logical Disk: Disk Read Bytes/sec 和 Logical Disk: Disk Write Bytes/sec   这两个计数器显示在读取或写入操作过程中从磁盘传送字节的速率。

  • Logical Disk: Avg. Disk Bytes/Read   此计数器显示在读取操作过程中从磁盘传送的平均字节数。该值可反映磁盘延迟 — 较大的读取操作会导致更长的延迟时间。

  • Logical Disk: Avg. Disk Bytes/Write   此计数器显示在写入操作过程中传送到磁盘的平均字节数。该值可反映磁盘延迟 — 较大的写入操作会导致更长的延迟时间。

  • Logical Disk: Current Disk Queue Length   此计数器显示在收集性能数据时磁盘上未完成的请求数。对于此计数器,值越小越好。若每个磁盘未完成的请求数大于 2,则指示存在瓶颈,并应进行调查。这意味着,对于由 4 个磁盘组成的 LUN,可以接受的最大值为 8。瓶颈会造成工作积压,这些工作积压会扩展到正在访问磁盘的当前服务器之外,从而导致用户长时间等待。可以通过以下方法来解决瓶颈:向 RAID 数组添加更多的磁盘,用速率更快的磁盘替换现有磁盘或将一些数据移动到其他磁盘。

  • Logical Disk: Avg. Disk Queue Length   此计数器显示在采样间隔期间为选定磁盘排队的读写请求的平均数。此规则指明,每个心轴的未完成的读写请求不应超过 2 个,但由于存储虚拟化和各个配置间的 RAID 级别的差异,导致难以测量此请求数。请查找既大于平均磁盘队列长度又大于平均磁盘延迟的情况。此组合可指示存储数组缓存使用过度或与其他应用程序共享心轴会影响性能。

  • Logical Disk: Avg. Disk sec/Read 和 Logical Disk: Avg. Disk sec/Write   这两个计数器显示对磁盘执行读取或写入操作所花费的平均时间(以秒为单位)。监视这两个计数器,确保二者的值保持在磁盘容量的 85% 以下。如果读取或写入操作大于磁盘容量的 85%,则磁盘访问时间将按指数方式增加。若要确定硬件的特定容量,请参考供应商文档,或使用 SQLIO 磁盘子系统基准工具计算容量。有关详细信息,请参阅 SQLIO 磁盘子系统基准工具(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=105586&clcid=0x804)(该链接可能指向英文页面)。

    • Logical Disk: Avg. Disk sec/Read   此计数器显示对磁盘进行读取操作所花费的平均时间(以秒为单位)。在经良好调整的系统上,对于日志,理想值为 1 到 5 毫秒(在缓存数组上,最好为 1 毫秒);对于数据,理想值为 4 到 20 毫秒(最好是小于 10 毫秒)。在高峰期会出现更长的延迟,但如果定期出现较高的值,则应调查其原因。

    • Logical Disk: Avg. Disk sec/Write   此计数器显示对磁盘进行写入操作所花费的平均时间(以秒为单位)。在经良好调整的系统上,对于日志,理想值为 1 到 5 毫秒(在缓存数组上,最好为 1 毫秒);对于数据,理想值为 4 到 20 毫秒(最好是小于 10 毫秒)。在高峰期会出现更长的延迟,但如果定期出现较高的值,则应调查其原因。

    在将 RAID 配置与 Avg. Disk sec/Read 或 Avg. Disk sec/Write 配合使用时,请使用下表中列出的公式以确定在磁盘上进行输入和输出操作的速率。

    RAID 级别 公式

    RAID 0

    I/Os per disk = (reads + writes) / number of disks

    RAID 1

    I/Os per disk = [reads + (2 * writes)] / 2

    RAID 5

    I/Os per disk = [reads + (4 * writes)] / number of disks

    RAID 10

    I/Os per disk = [reads + (2 * writes)] / number of disks

    例如,如果有一个带两个物理磁盘的 RAID 1 系统,则各个计数器将具有下表中显示的值:

    计数器

    Avg. Disk sec/Read

    80

    Logical Disk: Avg. Disk sec/Write

    70

    Avg. Disk Queue Length

    5

    可使用以下公式计算每个磁盘的 I/O 值:(80 + (2 * 70))/2 = 110

    可使用以下公式计算磁盘队列长度:5/2 = 2.5

    在此情况下,存在一个边框 I/O 瓶颈。

其他监视工具

也可以使用 SQL Server 2008 中的 sys.dm_io_virtual_file_stats 动态管理视图来监视磁盘延迟并分析趋势。有关详细信息,请参阅 sys.dm_io_virtual_file_stats (Transact-SQL) (https://go.microsoft.com/fwlink/?linkid=105587&clcid=0x804)。

疑难解答

如果磁盘或 RAID 遭遇瓶颈,请考虑执行以下操作:

  1. 将一些文件重定位到单独的磁盘或 RAID 数组。

  2. 将磁盘添加到数组。

  3. 如果无法分离内容(例如,如果有一个内容数据库文件),请用速率更快的磁盘替换这些磁盘。

  4. 如果可能,请将相关的内容数据库拆分为多个数据库;也就是说,通过使用诸如 Stsadm.exe 命令行工具或 Microsoft Office SharePoint Designer 之类的工具来重定位或拆分并重定位网站集。如果问题仍然存在,请重复故障排除步骤(从步骤 1 开始)。