系统级瓶颈

本主题介绍如何解决可能影响BizTalk Server解决方案性能的常见系统级瓶颈。

创建基线配置的快照

收集以下信息可以提供基线配置快照,可用于帮助纠正系统级瓶颈。

收集文档

查看方案的体系结构和基础结构的文档。

运行基线安全分析器

按照以下步骤运行基线安全分析器:

  1. 使用 Microsoft 基线安全分析器

  2. 使用域管理员帐户登录到托管BizTalk Server和SQL Server计算机的同一网络上的计算机。

  3. 在当前计算机上安装 Microsoft 基线安全分析器 (例如,其中一台BizTalk Server计算机或单独的计算机) 。

  4. 执行单独的扫描 (开始扫描) ,将每个BizTalk Server和SQL Server计算机的名称或 IP 地址指定为参数。

  5. 从 %userprofile%\SecurityScans 目录复制每个 (.mbsa 文件) 。

运行BizTalk Server最佳做法分析器

按照以下步骤运行BizTalk Server最佳做法分析器:

  1. 下载BizTalk Server最佳做法分析器

  2. 使用属于BizTalk Server管理员安全组的用户帐户登录到BizTalk Server节点。

  3. 在当前计算机上安装BizTalk Server最佳做法分析器。

  4. 运行该工具并保存报表。

运行 MSInfo32 并保存结果

按照以下步骤运行 MSInfo32:

  1. 使用域或本地管理员帐户登录到每台BizTalk Server并SQL Server计算机。

  2. 启动命令提示符并将目录更改为计算机的 %windir%\system32 目录。

  3. 从命令提示符运行 MSinfo32.exe。

  4. 单击“ 文件 ”菜单,然后选择“ 导出 ”菜单项以保存计算机配置。

导出BizTalk Server和SQL Server计算机 TCP/IP 注册表设置-

按照以下步骤保存BizTalk Server并SQL Server TCP/IP 注册表设置:

  1. 启动命令提示符并将目录更改为计算机的 %windir%\system32 目录。

  2. 从命令提示符运行 Regedit.exe。

  3. 导航到注册表中的以下项:

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] (network settings)
    
  4. 右键单击此注册表项,然后选择“ 导出 ”,将注册表项导出到文件。

收集 BizTalk 配置文件

在每个BizTalk Server节点上,收集位于 BizTalk Server 安装文件夹中的 BizTalk Server 配置文件、BTSNTSvc.exe.config 文件 (或 64 位) 主机 BTSNTSvc64.exe.config, (C:\Program Files\Microsoft BizTalk Server 2010) 。

收集 .NET 配置文件

在每个BizTalk Server节点上,收集 machine.config 和 web.config .NET Framework 4.0 配置文件。 可以在以下位置找到配置文件:

  • 对于 32 位:%windir%\Microsoft.NET\Framework\v4.0.30319\CONFIG 文件夹

  • 对于 64 位:%windir%\Microsoft.NET\Framework64\v4.0.30319\CONFIG 文件夹

使用 BizTalk MsgBoxViewer 工具收集有关 MessageBox 数据库的信息

按照以下步骤使用 BizTalk MsgBoxViewer 工具收集有关 MessageBox 数据库的信息:

  1. 下载 BizTalk MsgBoxViewer 工具,该工具在BizTalk 运行状况监视器中提供。

  2. 使用属于BizTalk Server管理员安全组的用户帐户登录到BizTalk Server计算机。

  3. 将 MsgBoxViewer.exe 复制到BizTalk Server计算机。

  4. 启动工具。

  5. 单击“ 要收集的可选信息 ”选项卡,然后单击“ 选择所有信息”。

  6. 单击“ 开始”以收集

  7. 当“状态”标签显示 “结束集合 ”消息时,切换到包含 MsgBoxViewer.exe 可执行文件的文件夹,并复制生成的报表 (.htm) 和日志文件。

收集和存储解决方案中使用的所有组件的源代码

将所有组件的源代码存储在单独的文件共享上, (例如业务流程、自定义管道组件和帮助程序组件代码) 。

初始故障排除

BizTalk Server解决方案的某些组件(如果未启用)将导致性能问题,无论 BizTalk 解决方案的总体大小或设计如何。 在对 BizTalk 解决方案进行详尽的瓶颈分析之前,应完成以下初步故障排除任务,以排除一些“常见疑犯”。

  • 验证跟踪主机实例是否正在运行 - 跟踪主机实例负责将 BAM 和 HAT 数据从 MessageBox 数据库的 TrackingData 表移动到 BizTalkDTADb 和/或 BAMPrimaryImport 数据库表。 如果跟踪主机实例未运行,则跟踪数据将在 MessageBox 数据库中累积,并会对BizTalk Server解决方案的性能产生负面影响。

  • 验证企业单一 Sign-On (ENTSSO) 服务是否在所有BizTalk Server计算机上运行 - BizTalk 主机实例保持对本地运行的 ENTSSO 服务的实例的依赖关系。 如果 ENTSSO 服务未在BizTalk Server上运行,则服务器上的主机实例也无法运行。

  • 验证SQL Server 代理服务是否在所有SQL Server计算机上运行 - SQL Server 代理服务必须正在运行,才能执行 BizTalk SQL Server 代理作业。 这些作业执行重要功能,使服务器保持正常运行。

  • 验证 BizTalk SQL Server 代理作业是否已启用且无异常地正在运行 - 即使SQL Server 代理服务正在运行,也必须确保所有默认 BizTalk SQL Server 代理作业都已启用并成功运行。

  • 检查BizTalk Server和SQL Server事件日志 - 粗略检查BizTalk Server或SQL Server事件日志可能会发现问题,否则可能需要花费大量时间进行诊断和解决。

  • 运行BizTalk Server最佳做法分析器 - BizTalk Server最佳做法分析器检查BizTalk Server部署并生成与最佳做法标准相关的问题列表。 该工具通过从不同的信息源(例如 Windows Management Instrumentation (WMI) 类、SQL Server数据库和注册表项)收集数据来执行配置级验证。 然后,该数据用于评估部署配置。 该工具仅读取和报告,不修改任何系统设置,并且不是自我优化工具。 下载BizTalk Server最佳做法分析器

高级系统瓶颈

本部分介绍BizTalk Server解决方案中可能存在的系统级瓶颈以及可能的缓解策略。

磁盘 I/O 瓶颈

磁盘 I/O 是指应用程序在服务器上安装的物理磁盘或多个磁盘上执行的读取和写入操作数。 可能导致磁盘 I/O 和相关瓶颈的常见活动包括长时间运行的文件 I/O 操作、数据加密和解密、从数据库表读取不必要的数据以及物理内存不足,这可能导致过多的分页活动。 磁盘速度是评估磁盘 I/O 瓶颈时要考虑的另一个因素:更快的磁盘可以提高性能,并帮助减少磁盘 I/O 瓶颈。

下表提供了在规划BizTalk Server解决方案的磁盘子系统时应考虑的因素。

磁盘子系统因素 详细信息
磁盘内存缓存和可用物理内存 由于内存在物理内存变得有限时缓存到磁盘,因此请确保有足够的可用内存量。 当内存不足时,会向磁盘写入更多页,从而导致磁盘活动增加。 此外,请确保将分页文件设置为适当的大小。 额外的磁盘内存缓存将有助于偏移磁盘 I/O 请求中的峰值。 但是,应注意的是,大型磁盘内存缓存很少解决没有足够的心轴的问题,而具有足够的心轴可以抵消对大型磁盘内存缓存的需求。 有关配置 Windows 分页文件以获得最佳性能的信息,请参阅主题 优化操作系统性能中的“配置 Windows PAGEFILE 以实现最佳性能”部分。
存储控制器类型 如果有电池备份的缓存,请启用写入缓存以提高事务日志文件卷和数据库卷上的磁盘写入性能。 写入缓存为写入 I/O 请求提供 2 毫秒的响应时间,而未启用写入缓存的响应时间为 10 到 20 毫秒。 启用写入缓存可极大地提高客户端写入请求的响应能力。 读取缓存在BizTalk Server方案中不会提高性能,因为它仅适用于仅在事务日志文件中发生的顺序磁盘读取。

事务日志文件仅在播放时(例如在数据库还原后或服务器未正确关闭时)从中读取。 较大的缓存允许缓冲更多数据,这意味着可以适应较长的饱和时间。 如果控制器允许配置缓存页大小,则应将其设置为 4 KB。 更大的大小(如 8 KB)会导致缓存浪费,因为 4 KB 的 I/O 请求占用整个缓存页(8 KB),从而将可用缓存减少一半。
主轴 主轴比容量更重要,如果主轴支持大量随机 I/O 请求,BizTalk Server性能会提高。 规划总利用率不超过 80%,以确保有足够的 I/O 可用,即使在主轴发生故障的情况下也是如此。
Raid 使用的 RAID 解决方案应基于适合你的环境的成本和性能权衡。 因此,对于特定的数据存储要求,建议使用多种类型的 RAID 解决方案。 常规建议如下:

- BizTalk Server数据库的镜像集) 中使用 Raid-1+0 (条带化集。
- 对事务日志文件卷使用没有奇偶校验) 的 Raid-1 (镜像集。
- 通常,不建议使用具有分布式奇偶校验) 的 Raid 5 (条带化集,因为与其他 Raid 配置相比,Raid 5 不提供最佳的可靠性、可用性和性能。
- 由于可能会永久丢失数据,因此不应在BizTalk Server生产环境中使用没有奇偶校验) 配置的 Raid-0 (条带化集。
总线类型 吞吐量越高,性能越好。 通常,与 IDE 或 ATA 总线相比,SCSI 总线提供更好的吞吐量和可伸缩性。 可以使用以下公式来确定总线类型的理论吞吐量限制:

(总线速度 (位) /8 位/字节) X 运行速度 ((以 MHz) 为单位) = 吞吐量 ((MB/秒) )

还可以通过将多个驱动器放置在单独的 I/O 总线上来提高磁盘 I/O 性能。

用于测量磁盘 I/O 瓶颈的性能计数器

注意

尝试分析磁盘性能瓶颈时,应始终使用物理磁盘计数器。 但是,如果使用软件 RAID,则应使用逻辑磁盘计数器。 对于逻辑磁盘和物理磁盘计数器,每个计数器对象中都提供相同的计数器。 逻辑磁盘数据由卷管理器 (或) 管理器跟踪,物理磁盘数据由分区管理器跟踪。

应使用以下性能计数器来确定系统是否遇到与磁盘 I/O 相关的瓶颈:

  • PhysicalDisk\Avg. Disk Queue Length

    • 阈值:不应大于轴数加 2。

    • 重要性:此计数器指示在采样间隔期间为所选磁盘排队的读取和写入请求的平均数。 此计数器可用于收集并发数据,包括数据突发和峰值负载。 这些值表示在获取统计信息的驱动程序下方未完成的请求数。 这意味着请求不一定排队,但实际上可能处于服务状态或已完成,并且正在备份路径。 可能的未完成位置包括:

      • SCSIport 或 Storport 队列

      • OEM 驱动程序队列

      • 磁盘控制器队列

      • 硬盘队列

      • 主动从硬盘接收

  • PhysicalDisk\Avg. Disk Read Queue Length

    • 阈值:应小于 2。

    • 重要性:此计数器指示在采样间隔内为所选磁盘排队的平均读取请求数。

  • PhysicalDisk\Avg. Disk Write Queue Length

    • 阈值:应小于 2。

    • 重要性:此计数器指示在采样间隔期间为所选磁盘排队的平均写入请求数。

  • PhysicalDisk\Avg. Disk sec/Read

    • 阈值:无特定值。

      • 小于 10 毫秒 (毫秒) = 良好

      • 介于 15 到 25 毫秒 = 公平之间

      • 大于 25 毫秒 = 差

    • 重要性:此计数器指示从磁盘读取数据操作的平均时间(以秒为单位)。 如果数字大于 25 毫秒 (毫秒) ,则表示磁盘系统在从磁盘读取时遇到延迟。 对于托管BizTalk Server的任务关键型服务器,可接受的阈值要低得多,大约为 10 毫秒。

  • PhysicalDisk\Avg. Disk sec/Write

    • 阈值:无特定值。

      • 小于 10 毫秒 (毫秒) = 良好

      • 介于 15 到 25 毫秒 = 公平之间

      • 大于 25 毫秒 = 差

    • 重要性:此计数器指示数据写入磁盘操作的平均时间(以秒为单位)。 如果数字大于 25 毫秒,则磁盘系统在写入磁盘时会遇到延迟。 对于托管BizTalk Server的任务关键型服务器,可接受的阈值要低得多,大约为 10 毫秒。

  • PhysicalDisk\Avg. Disk sec/Transfer

    • 阈值:不应超过 18 毫秒。

    • 重要性:此计数器指示平均磁盘传输的时间(以秒为单位)。 这可能表示存在大量磁盘碎片、磁盘速度缓慢或磁盘故障。 将 Physical Disk\Avg. Disk sec/TransferMemory\Pages/sec 计数器的值相乘。 如果这些计数器的乘积超过 0.1,则分页需要超过 10% 的磁盘访问时间,因此需要更多可用的物理内存。

  • PhysicalDisk\Disk Writes/sec

    • 阈值:取决于制造商的规格。

    • 重要性:此计数器指示磁盘上的写入操作速率。

  • 处理器\% DPC 时间、% 中断时间和特权时间百分比 - 如果中断时间和延迟过程调用 (DPC) 时间是特权时间的很大一部分,则内核将花费大量时间来处理 I/O 请求。 在某些情况下,可以通过在多处理器系统上配置对少量 CPU 的中断和 DPC 相关性来提高性能,从而提高缓存位置。 在其他情况下,最好将中断和 DPC 分布到多个 CPU 中,以免中断和 DPC 活动成为瓶颈。 有关使用中断筛选器配置工具将网络适配器中断绑定到多处理器计算机上的特定处理器的信息,请参阅 优化操作系统性能中的“使用中断筛选器配置工具将网络适配器中断绑定到多处理器计算机上的特定处理器”部分。

  • Processor\DPC Queued/sec - 测量 DPC 消耗 CPU 时间和内核资源的方式。

  • Processor\Interrupts/sec - 另一种测量中断消耗 CPU 时间和内核资源的方式。 新式磁盘控制器通常合并或合并中断,以便单个中断会导致处理多个 I/O 完成。 当然,在延迟中断 (从而完成) 和节约 CPU 处理时间之间需要权衡。

磁盘 I/O 优化选项

如果确定磁盘 I/O 是环境中的瓶颈,则可以使用以下技术来缓解瓶颈:

  • 对磁盘进行碎片整理 - 使用 PageDefrag 实用工具 中提供的 对 Windows 分页文件进行碎片整理并预分配主文件表。

  • 使用条带集在多个磁盘上并发处理 I/O 请求 - 使用镜像卷提供容错并提高 I/O 性能。 如果不需要容错,请实现条带集以实现快速读取和写入并改进存储容量。 使用条带集时,每个磁盘的利用率会降低,因为工作分散在卷上,总吞吐量也会增加。 如果在条带集中添加其他磁盘不会增加吞吐量,则系统可能由于磁盘控制器在磁盘之间发生争用而遇到瓶颈。 在这种情况下,添加额外的磁盘控制器将有助于分配负载并提高性能。

  • 在多个驱动器之间分配工作负载 - Windows 群集和分布式文件系统为多个磁盘驱动器上的负载均衡提供解决方案。

  • 限制使用文件压缩或加密 - 文件压缩和加密是 I/O 密集型操作。 应仅在绝对必要的情况下使用它们。

  • 禁用短名称的创建 - 如果不支持 Windows 3.x 客户端的 MS-DOS,请禁用短名称以提高性能。 有关禁用短名称创建的详细信息,请参阅 优化操作系统性能中的“禁用短文件名 (8.3) 生成”部分。

  • 禁用上次访问更新 - 默认情况下,每次遍历目录时,NTFS 都更新上次访问目录的日期和时间戳。 对于大型 NTFS 卷,此更新过程可能会降低性能。 有关禁用上次访问更新的详细信息,请参阅 优化操作系统性能中的“禁用 NTFS 上次访问更新”部分。

    注意

    某些应用程序(如增量备份实用工具)依赖于 NTFS 更新信息,如果没有 NTFS 更新信息,将无法正常运行。

  • 为主文件表保留适当的空间 - 根据通常存储在 NTFS 卷上的文件数,将 NtfsMftZoneReservation 项添加到注册表。 将此项添加到注册表时,系统会在卷上为主文件表保留空间。 以这种方式保留空间允许主文件表以最佳方式增长。 如果 NTFS 卷通常存储的文件相对较少,请将此注册表项的值设置为默认值 1。 通常,如果 NTFS 卷存储适中数量的文件,则可以使用值 2 或 3;如果 NTFS 卷往往包含相对大量的文件,则使用值 4 (最大) 。 但是,请确保测试大于 2 的任何设置,因为这些更大的值会导致系统为主文件表保留更大的磁盘部分。 有关将 NtfsMftZoneReservation 添加到注册表的详细信息,请参阅 优化操作系统性能中的“增加主文件表的可用空间”部分。

  • 使用最高效的可用磁盘系统 - 除了使用的物理磁盘外,还要考虑要使用的磁盘控制器和布线的类型。 高效的磁盘子系统还应提供支持中断审查或避免中断的驱动程序,以缓解由磁盘 I/O 引起的处理器中断活动。

  • 确保使用适当的 RAID 配置 - 使用 RAID 10 (条带化和镜像) 以实现最佳性能和容错。 缺点是使用 RAID 10 的成本很高。 有大量写入操作时,请避免使用 RAID 5。 有关在BizTalk Server环境中实现 RAID 的详细信息,请参阅 BizTalk Server 数据库优化中的“磁盘基础结构”部分。

  • 考虑使用数据库分区 - 如果遇到数据库瓶颈,请考虑使用数据库分区并将磁盘映射到特定表和事务日志。 分区的主要用途是克服大型表的磁盘瓶颈。 如果你有一个包含大量行的表,并且确定它是瓶颈的根源,请考虑使用分区。 对于SQL Server,可以使用文件组来提高 I/O 性能。 可以将表与文件组相关联,然后将文件组与特定硬盘相关联。 有关为BizTalk Server数据库使用优化文件组的详细信息,请参阅优化数据库的文件组

  • 如果页面错误过多,请考虑添加物理内存 -内存:页数/秒性能计数器的值较高可能指示过多的分页,这将增加磁盘 I/0。 如果发生这种情况,请考虑添加物理内存以减少磁盘 I/O 并提高性能。

  • 请考虑使用具有较高 RPM 分级的磁盘,或使用存储区域网络 (SAN) 设备 - 与 RPM 分级较低的磁盘相比,具有较高 RPM 分级的磁盘提供更高的性能。 SAN 设备通常提供顶级性能,但价格溢价。

  • 遵循 优化数据库性能中的建议。 本主题提供有关在配置BizTalk Server之前和之后优化数据库性能的几个建议。

CPU 瓶颈

在服务器上运行的每个应用程序都会获得 CPU 的时间段。 CPU 可能能够有效地处理计算机上运行的所有进程,或者它可能会过载。 通过检查处理器活动和单个进程的活动(包括线程创建、线程切换和上下文切换),可以深入了解处理器工作负载和性能。

如果出现以下情况,则可能会出现 CPU 瓶颈:

  • Processor\% Processor Time 性能计数器的值通常超过 75%。

  • 系统\处理器队列长度性能计数器在持续一段时间内的值为 2 或更多。

  • Processor\% Privileged TimeSystem\Context Switches/sec 性能计数器的值异常高。

    如果 Processor\ % Processor Time 性能计数器的值较高,则会发生排队,并且在大多数情况下 ,System\Processor Queue Length 的值也会很高。

用于测量 CPU 瓶颈的性能计数器

应使用以下性能计数器来确定系统是否遇到与 CPU 相关的瓶颈:

  • Processor\% Processor Time

    • 阈值:应小于 85%。

    • 重要性:此计数器是处理器活动的主要指示器。 高值很多不一定是坏的。 但是,如果其他与处理器相关的计数器呈线性增长,例如 Processor\% Privileged TimeSystem\Processor Queue Length,则 CPU 使用率过高可能值得调查。

  • Processor\% Privileged Time

    • 阈值:始终超过 75% 的数字表示瓶颈。

    • 重要性:此计数器指示线程在特权模式下运行的时间百分比。 当应用程序调用操作系统函数 (例如执行文件或网络 I/O 或分配内存) 时,这些操作系统函数以特权模式执行。

  • Processor\% 中断时间

    • 阈值:取决于处理器。

    • 重要性:此计数器指示处理器接收和维护硬件中断所花费的时间百分比。 此值间接指示生成中断的设备(如网络适配器)的活动。 此计数器的急剧增加表明存在潜在的硬件问题。

  • System\Processor 队列长度

    • 阈值:平均值始终高于 2 表示存在瓶颈。

    • 重要性:如果准备运行的任务多于处理器,线程会排队。 处理器队列是线程的集合,这些线程已准备就绪,但无法由处理器执行,因为另一个线程当前正在执行。 持续或重复的队列超过两个线程是处理器瓶颈的明显指示。 在这些情况下,可以通过降低并行度来获得更多吞吐量。

      可以将此计数器与 Processor\% Processor Time 计数器结合使用,以确定应用程序是否可以从更多 CPU 中获益。 即使在多处理器计算机上,也有一个处理器时间队列。 因此,在多处理器计算机中,将处理器队列长度 (PQL) 值除以为工作负荷提供服务的处理器数。

      如果 CPU 非常繁忙, (90% 或更高的利用率) 并且 PQL 平均值始终高于每个处理器 2 个,则可能有一个处理器瓶颈,可能会因添加 CPU 而受益。 或者,可以在应用程序级别减少线程数并增加队列。 这会导致上下文切换较少,而上下文切换较少有利于降低 CPU 负载。 PQL 值 2 或更高且 CPU 使用率低的一个常见原因是处理器时间请求随机到达,并且线程需要处理器不规则的时间量。 这意味着处理器不是瓶颈,但应改进应用程序线程逻辑。

  • System\Context 开关/秒

    • 阈值:一般情况下,每个处理器的上下文切换速率小于每秒 5,000 不值得担心。 如果上下文切换速率超过每个处理器每秒 15,000,则上下文切换可能会成为瓶颈。

    • 意义:当高优先级线程抢占当前正在运行的较低优先级线程或高优先级线程阻止其他线程时,会发生上下文切换。 当许多线程共享相同的优先级级别时,可能会发生高级别的上下文切换。 这通常表示系统上的处理器争用的线程太多。 如果处理器利用率和上下文切换级别都很低,这通常表示线程被阻止。

解决 CPU 瓶颈

第一步是确定哪个进程占用过多的处理器时间。 通过查看“进程”页上的“CPU”列,使用 Windows 任务管理器确定哪个进程消耗了高级别的 CPU。 还可以通过监视性能监视器中的进程时间并选择要监视的进程来确定这一点。

用于确定哪些进程占用过多 CPU 时间的另一个强大工具是 Visual Studio Team System (VSTS) 套件提供的 Visual Studio Team System Profiler。 有关使用 Visual Studio Team System Profiler 的详细信息,请参阅 Visual Studio Team System 文档。

确定 CPU 是瓶颈后,有多个选项,包括:

  • 如果具有多线程应用程序,请添加多个处理器。 如果应用程序是单线程的,请考虑升级到更强大的处理器。

  • 如果发现上下文切换速率较高,请考虑在增加处理器数之前减少进程的线程计数。

  • 分析和优化导致 CPU 使用率过高的应用程序。 可以使用 ADPLUS 实用工具转储正在运行的进程,并使用 Windbg 分析原因。 这些实用工具是 Windows 调试工具包的一部分。 可以从 Windows 调试工具下载这些工具。

  • 分析应用程序生成的检测日志,以隔离执行时间最长的子系统。 确定代码评审是否比仅优化BizTalk Server环境更有益。

注意

尽管可以使用 任务管理器 或命令提示符更改应用程序的进程优先级,但通常应避免这样做。

内存瓶颈

评估内存相关的瓶颈时,请考虑不必要的分配、低效的清理以及不适当的缓存和状态管理机制。 若要解决与内存相关的瓶颈,请优化代码以消除这些问题,然后优化分配给应用程序的内存量 () 。 如果在优化期间确定发生内存争用和过多分页,则可能需要向服务器添加额外的物理内存。 内存不足会导致应用程序虚拟地址空间与磁盘的分页增加。 如果分页变得过多,磁盘 I/O 将增加,并会对整体系统性能产生负面影响。

如果出现以下情况,则可能是内存瓶颈。

  • 内存\可用 MBytes 性能计数器的值较低,可能是由于系统内存限制或应用程序未释放内存。 监视 正在运行的每个进程的 Process\Working Set 性能计数器的值。 如果 进程\工作集 的值仍然很高,即使进程不处于活动状态,这可能表明进程未按应该释放内存。

  • Memory\Pages/sec 性能计数器的值较高。 Memory\Pages 输入/秒的平均值除以 Memory\Page Reads/sec 的平均值,表示每个磁盘读取的页数。 此值通常不应超过每秒五页。 大于每秒 5 页的值表示系统花费了过多的分页时间,并且需要更多内存 (假设应用程序已经过优化) 。

用于测量内存瓶颈的性能计数器

应使用以下性能计数器来确定系统是否遇到与内存相关的瓶颈:

  • Memory\Available Mbytes

    • 阈值:小于已安装 RAM 的 20%到 25% 的一致值表示内存不足。

    • 重要性:这表示计算机上运行的进程可用的物理内存量。 请注意,此计数器仅显示上次观察到的值。 这不是平均值。

  • Memory\Page Reads/sec

    • 阈值:持续值超过 5 表示读取请求存在大量页错误。

    • 重要性:此计数器指示进程的工作集对于导致内存分页到磁盘的可用物理内存来说太大。 它显示读取操作的数量,而不考虑在每个操作中检索到的页数。 较高的值表示内存瓶颈。

      如果低速率的页面读取操作与物理磁盘\% 磁盘时间和物理磁盘\平均磁盘队列长度的高值一致,则可能存在磁盘 I/O 瓶颈条件。 如果队列长度的增加不伴随着页面读取速率的降低,则内存瓶颈因物理内存不足而存在。

  • Memory\Pages/sec

    • 阈值:持续值超过 5 表示存在瓶颈。

    • 重要性:此计数器指示从磁盘读取页或将页面写入磁盘以解决硬页错误的速度。 将 Physical Disk\Avg. Disk sec/TransferMemory\Pages/sec 性能计数器的值相乘。 如果这些值的乘积超过 0.1,则分页占用了超过 10% 的磁盘访问时间,这表示物理内存不足。

  • Memory\Pool Nonpaged Bytes

    • 阈值:在系统启动时,观察 Memory\Pool Nonpaged Bytes 的值是否比其值增加 10% 或更多。

    • 重要性:启动时的值增加 10% 或更多可能是内存泄漏的指示。

  • Server\Pool 非分页失败

    • 阈值:常规非零值表示瓶颈。

    • 重要性:此计数器指示来自非分页池的分配失败的次数。 非分页池包含进程虚拟地址空间中的页,这些页不会交换到磁盘上的页文件,例如进程内核对象表。 非分页池的可用性决定了可以创建多少个进程、线程和其他此类对象。 当来自非分页池的分配失败时,这可能是由于进程中的内存泄漏,尤其是在处理器使用率没有相应增加的情况下。

  • Server\Pool 分页失败

    • 阈值:无特定值。

    • 重要性:此计数器指示分页池中的分配失败的次数。 此计数器的正值表示计算机的物理内存不足或 Windows 分页文件太小。

  • Server\Pool 非分页峰值

    • 阈值:无特定值。

    • 重要性:这是服务器保留供在任何一个点使用的非分页池中的最大字节数。 它指示计算机应具有多少物理内存。 由于非分页池必须驻留在物理内存中,并且必须留出一些内存用于其他操作,因此根据经验法则,计算机应安装的物理内存是此计数器所指示值的 4 倍。

  • Memory\Cache Bytes

    • 阈值:无特定值。

    • 重要性:监视不同负载条件下的缓存大小。 此性能计数器的此值指示静态文件缓存的大小。 默认情况下,此计数器使用大约 50% 的可用内存,但如果可用内存缩小,则会减少,这会影响系统性能。

  • Memory\Cache Faults/sec

    • 阈值:无特定值。

    • 重要性:此计数器指示操作系统在文件系统缓存中查找数据但找不到数据的频率。 此值应尽可能低。

  • Cache\MDL Read Hits %

    • 阈值:此值越高,文件系统缓存的性能就越好。 值应尽可能接近 100%。

    • 重要性:此计数器提供内存描述符列表 (MDL) 读取请求到文件系统缓存的百分比,其中缓存直接返回对象,而无需从硬盘读取。

  • Process\Working Set

    • 阈值:无特定值。

    • 重要性:工作集是当前加载在内存中的内存页集, (物理 + 虚拟) 。 如果系统有足够的内存,它可以在工作集中保留足够的空间,以便它不需要执行磁盘操作来将内存分页到磁盘。 但是,如果内存不足,系统会尝试通过从进程中删除内存来减少工作集,从而导致页面错误增加。 当页面错误率上升时,系统会尝试增加进程的工作集。 如果观察到工作集中出现较大波动,则可能表示内存不足。 工作集中的值较高也可能是由于应用程序中的多个程序集。 可以使用全局程序集缓存中共享的程序集来改进工作集。

解决内存瓶颈

如果确定内存是BizTalk Server环境中的瓶颈,请使用以下一种或多种方法来解决瓶颈:

  • 如果可以控制分配,请优化分配的内存量。 例如,可以针对BizTalk Server、ASP.NET 和SQL Server对此进行优化。

  • 增加 Windows 分页文件的大小,并按照 优化操作系统性能的“配置 Windows PAGEFILE 以获得最佳性能”部分中的步骤进行操作。

  • 关闭不使用的服务。 停止不定期使用的服务可节省内存并提高系统性能。 有关详细信息,请参阅 优化操作系统性能的“禁用非必要服务”部分。

  • 删除不必要的协议和驱动程序。 即使是空闲协议也会使用分页和非分页内存池中的空间。 驱动程序也会消耗内存,因此应删除不必要的驱动程序。 有关详细信息,请参阅 优化操作系统性能的“删除不必要的网络协议”部分。

  • 在BizTalk Server环境中的计算机上安装其他物理内存。

注意

在 32 位系统上,BizTalk 最多可以使用 2GB 内存,如果使用 /3GB 开关,BizTalk Server 2010 及更高版本时,限制将增加到 3GB。 有关内存使用情况的详细信息,请参阅 Windows 版本的内存限制

网络 I/O 瓶颈

如果出现网络 I/O 瓶颈,

  • 网络接口\字节总数/秒性能计数器的值超过可用网络带宽的 80%。

  • Server\Bytes Total/sec 性能计数器的值大于可用网络带宽的 50%。

用于测量网络 I/O 瓶颈的性能计数器

应使用以下性能计数器来测量网络 I/O 并确定系统是否遇到与网络 I/O 相关的瓶颈:

  • Network Interface\Bytes Total/sec

    • 阈值:持续值超过网络容量的 80%。

    • 重要性:此计数器指示通过每个网络适配器发送和接收字节的速率。 此计数器有助于确定网络适配器是否饱和,以及是否应添加一个或多个网络适配器以增加可用网络带宽。

  • Network Interface\Bytes Received/sec

    • 阈值:无特定值。

    • 重要性:此计数器指示通过每个网络适配器接收字节的速率。 使用此计数器的值以总可用带宽的百分比计算传入数据的速率。 这有助于确定是否应在向BizTalk Server发送数据的客户端上增加网络带宽,或者是否应在BizTalk Server计算机上增加网络带宽。

  • Network Interface\Bytes Sent/sec

    • 阈值:无特定值。

    • 重要性:此计数器指示通过每个网络适配器发送字节的速率。 使用此计数器的值以总可用带宽的百分比计算传出数据的速率。 这有助于确定在向客户端发送数据BizTalk Server是否应增加网络带宽,或者是否应在从BizTalk Server接收数据的客户端计算机上增加网络带宽。

  • Server\Bytes Total/sec

    • 阈值:持续值超过网络容量的 50%。

    • 重要性:此计数器指示通过网络发送和接收的字节数。 较高的值表示网络 I/O 瓶颈。 如果所有服务器的 字节总数/秒 大致等于网络的最大传输速率,请考虑将网络子网化以提高性能。 有关将网络子网化以提高性能的详细信息,请参阅BizTalk Server数据库优化中的子网部分。

解决网络 I/O 瓶颈

如果确定网络 I/O 是环境中的瓶颈,请使用以下一种或多种方法来解决瓶颈:

  • 遵循 优化网络性能的“提高网络性能的一般准则”部分中的建议。

  • 在BizTalk Server环境中的每台计算机上运行主题优化网络性能中所述的 Windows Powershell 网络优化脚本。

另请参阅

查找并消除瓶颈