如何测试 Microsoft 远程过程调用的性能

本文已归档。它按“原样”提供,并且不再更新。
概要
本文介绍如何测试 Microsoft 远程过程调用 (RPC) 的性能,以及如何针对 RPC 错误信息进行故障排除。
更多信息
RPC 与开放软件基金会(Open Software Foundation,OSF)设计兼容,并且具有与其他数据通讯交换(Data Communications Exchange,DCE)标准进行交互的能力。RPC 是业界标准的进程之间的通讯 (IPC) 机制,用于独立于网络的、可支持多种网络协议的客户机-服务器通讯。RPC 使用 IPC 机制来在客户机与服务器之间建立通讯,以便调用远程计算机上的程序功能。使用此级别服务的复杂程序需要有一个连接或相应级别的吞吐量来提供这种能力。例如,使用 Microsoft Exchange Server 时,需要有一个连接来可靠地维持数据流。

RPC 错误信息

使用 RPC 时,可能会收到下列错误信息(这些错误信息可能是网络连接缓慢导致的,也可能不是)之一:
  • The RPC protocol sequence is not supported.
  • The RPC protocol sequence is invalid.
  • The RPC server is already listening.
  • The RPC server is not listening.
  • The RPC server is unavailable.
  • The RPC server is too busy to complete this operation.
  • A remote procedure call (RPC) protocol error occurred.
  • The transfer syntax is not supported by the RPC server.
  • The RPC protocol sequence was not found.
  • An internal error occurred in a remote procedure call (RPC).
  • The RPC server attempted an integer division by zero.
  • An addressing error occurred in the RPC server.
  • A floating-point operation at the RPC server caused a division by zero.
  • A floating-point underflow occurred at the RPC server.
  • A floating-point overflow occurred at the RPC server.
  • The list of RPC servers available for the binding of auto handles has been exhausted.
  • The error specified is not a valid Windows RPC error code.
  • Incompatible version of the RPC stub.
  • The RPC pipe object is invalid or corrupted.
  • An invalid operation was attempted on an RPC pipe object.
  • Unsupported RPC pipe version.
  • Invalid asynchronous RPC call handle for this operation.
  • The RPC pipe object has already been closed.
  • The RPC call completed before all pipes were processed.
  • No more data is available from the RPC pipe.

RPC 性能问题和错误信息的故障排除

有许多工具可以用来确定 RPC 错误信息是否由缓慢的网络连接导致的。如果收到一条 RPC 错误信息,就需要排除缓慢网络连接这一可能的原因。请使用下面的一种或几种方法来找出此问题的原因。
  • 要解决可能导致 RPC 错误信息的名称解析问题,请检查您是否可以在目标服务器上的命令提示符下使用 NET VIEW 命令。如果客户端程序与服务器程序之间使用的协议是传输控制协议/Internet 协议 (TCP/IP),可以使用 Lmhosts 文件来解决可能导致错误的 Windows Internet 命名服务 (WINS) 问题。
  • 通过使用另一个 RPC 程序,可以测试基本的 RPC 连接性。Windows NT Server 包含几个 RPC 程序。事件查看器 (Eventvwr.exe) 和注册表编辑器 (Regedt32.exe) 可以将焦点放在任何运行 Windows NT 的计算机上。而诸如用户管理器 (Usrmgr.exe) 和服务器管理器 (Srvmgr.exe) 之类的其他程序在默认情况下将焦点放在主域控制器 (PDC) 上。可以使用上述程序之一作为另一种测试 RPC 连接性的方法。
  • 要测试网络连接性,请使用性能监视器 (Perfmon.exe) 监视通过网络进行基本文件复制的速度。为了给测试提供充分的抽样测试时间并充分考虑到分段和排序因素,只使用一个大小至少为 2 MB 的文件进行测试即可。要使用性能监视器监视通过网络复制文件的情况,请执行以下操作:

    1. 确定一个至少为 2 MB 的文件的位置。如果没有现成的 2 MB 文件,可以使用 COPY 命令从现有的文件创建这样的文件。为此,在命令提示符下键入以下命令,然后按 Enter 键:
      copy /b file.ext + file.ext + file.ext + file.ext destination.ext
      注意:如果源文件不是文本文件,请使用二进制 (/b) 开关。这样可以避免 Ctrl+Z 被读作文件结束符。
    2. 在客户计算机上启动性能监视器。由于性能监视器在进行文件复制时不能区分与不同计算机的连接,如果其他连接会影响测试结果,您可能需要断开当前的所有网络连接。要断开当前的所有网络连接,请在命令提示符下键入 net use * /d,然后按 Enter 键。
    3. 性能监视器可使用 Bytes Transmitted/sec、Bytes Received/sec 和 Bytes Total/sec 计数器来监视服务器的或重定向器对象的文件复制。为了简化过程,也为了更准确地表示 RPC 连接中的数据流,请将文件从服务器计算机复制到运行 RPC 程序的客户计算机。一个 2 MB 文件需要位于服务器计算机上。
    4. 在客户计算机上的性能监视器中,请执行以下步骤:
      1. 编辑菜单上,单击添加到图表
      2. 对象框中,单击重定向器
      3. 计数器框中,单击 Bytes Received/sec,然后单击添加
    5. 在命令提示符下,将一个网络驱动器号映射到服务器计算机,然后将文件从服务器计算机复制到客户计算机。
    6. 在性能监视器中,观察平均值、最大值和最小值。如果测试时使用的是 128Kbps 链接,请观察平均值计数器,检查复制过程的速度是否接近每秒 16,384 字节的 75% 的理论限制(.75 x 16,384 = 12,288 字节/秒)。此值应该更高以实现重要的功能,并且可能预示出需要网络扩展。最好能达到接近每秒 800,000 字节 (bps) 的速度,这是标准的连接速度。下表列出了每秒千位 (kpbs) 和每秒千字节 (KBps) 之间的转换:

      连接速度每秒字节 (bps)
      128kbps16,384
      512kbps65,536
      1.544Mbps (T1)193,000
      10Mbps(以太网)1,250,000
      46.320Mbps (T3)5,790,000


      在线路速度一定(例如,128K)的情况下,可以看到,由于带宽使用率和其他因素,实际吞吐量小于 16,384 bps 的全部吞吐量。这些数字都是理论上的最大值,实际值由于存在网络开销而有所降低。
    7. 要进一步消除一般的网络连接性问题,请执行以下操作:
      1. 在客户计算机上的性能管理器中,在编辑菜单上单击添加到图表
      2. 对象框中,单击重定向器
      3. 计数器框中,单击 Bytes Transmitted/sec,然后单击添加
      4. 将文件复制回服务器计算机,监视复制文件的速度。
    注意:确保客户计算机与服务器计算机之间的这些测试对于所需的服务级别是可接受的。要使用性能监视器进行其他测试,例如,反转客户计算机和服务器计算机之间数据流的方向,请选择适当的计数器。
  • 测试两台计算机之间的 RPC 通讯的另一种方法是使用 Rpcping 工具。有关如何使用 Rpcping 工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    167260 怎样使用 RPCPing 测试 RPC 通讯
  • 其他导致 RPC 错误信息的原因可能出自运行在客户计算机或服务器计算机上的第三方服务或较大的服务。要判定问题是不是由正在运行的服务造成的,请停止所有的非默认服务,然后再次使用事件查看器和性能监视器测试 RPC 性能。
  • 在客户计算机和服务器计算机上检查 RPC 服务的状态。为此,在命令提示符下键入 net start,然后按 Enter 键。对于域控制器,将显示以下信息:
    Remote Procedure Call (RPC) Locator
    Remote Procedure Call (RPC) Service
  • 要进一步检查这些服务的状态,请使用 Microsoft Windows NT Resource Kit 附带的 Sc.exe 工具。有关使用 Sc.exe 工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    166819 Using Sc.exe and Netsvc.exe to Control Services Remotely
  • Services.exe 包含 RPC 代码的大部分,它的一个线程可能处于挂起状态。请使用 Dr. Watson 工具 (Drwtsn32.exe) 确定是否已报告错误信息。即使没有报告任何错误信息,它仍可能有一个线程处于挂起状态。如果是这种情况,可能需要重新启动计算机。
  • 可以使用 Windows NT Resource Kit 附带的 Tlist.exe 工具获得与以下内容类似的信息:
    62 Win32StartAddr:0x022a3ca1 LastErr:0x000003e5 State:Waiting64 Win32StartAddr:0x022a4895 LastErr:0x00000000 State:Waiting67 Win32StartAddr:0x76e03f90 LastErr:0x00000000 State:Waiting4.0.1381.4 shp  0x02290000  services.exe4.0.1381.4 shp  0x77f60000  ntdll.dll4.0.1381.4 shp  0x77e10000  RPCRT4.dll						
    对状态、文件和日期进行检查后,也许能获得进一步的信息。
  • 可以使用 Pmon.exe 工具(Windows NT Resource Kit 附带)任务管理器获得有关 Services.exe 的信息,例如,内存和 CPU 使用情况。
  • Windows NT Resource Kit 附带的 Pstat.exe 工具可显示 Services.exe 的线程状态。
属性

文章 ID:177446 - 上次审阅时间:12/05/2015 08:12:17 - 修订版本: 2.0

Microsoft Windows NT Server 4.0 企业版, Microsoft Windows NT Server 3.5, Microsoft Windows NT Server 3.51, Microsoft Windows NT Server 4.0 Standard Edition, Microsoft Windows NT Workstation 3.5, Microsoft Windows NT Workstation 3.51, Microsoft Windows NT Workstation 4.0 开发员版

  • kbnosurvey kbarchive kbhowto kbinfo kbrpc kbnetwork KB177446
反馈