FIX: 性能监视器计数器丢失在群集上消息队列中的故障转移期间

文章翻译 文章翻译
文章编号: 267316 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
重要 本文包含有关修改注册表的信息。在修改注册表之前,请务必对其进行备份,并确保您了解如何还原注册表发生问题。有关如何备份、 还原,和编辑注册表单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986在 Microsoft Windows 注册表的说明
展开全部 | 关闭全部

本文内容

症状

Microsoft 消息队列,也称为 MSMQ,可能会报告不正确性能监视器 (Perfmon) 中的信息。在 Microsoft Windows 2000 群集上和在 Microsoft Windows Server 2003 群集上,使用消息队列会出现此问题。消息队列还可能会丢失性能计数器节点之间的故障转移之后。

应用程序事件日志中,可能会记录以下错误消息:


事件 ID: 1008年
源: Perflib
说明: 该打开服务过程 MSMQ 在 DLL 中失败的 C:\WINNT\System32\MQPERF.DLL。此服务的性能数据将不可用。返回状态代码是数据 DWORD 0

原因

消息队列和 $ Mqperf.dll,消息队列性能监视器 DLL 之间交换消息队列性能监视器计数器数据。共享内存中交换数据。多个服务实例,如消息队列运行时在本地节点上,并在虚拟服务器上,在群集上的计算机上所有将性能数据写到内存中相同的位置。这会使性能结果毫无意义。

解决方案

修补程序信息

可以从 Microsoft 获得支持的修补程序。但是,此修补程序被用于解决本文所述的此问题。此修补程序仅应用于出现这一特定问题的系统。此修补程序可能会接受进一步的测试。因此,如果此问题没有对您造成严重的影响,我们建议您等待包含此修补程序的下一个软件更新。

是否可供下载此修补程序没有"提供修补程序下载"部分中,在这篇知识库文章的顶部。如果不会显示此部分,请联系 Microsoft 客户服务和支持以获取此修复程序。

注意如果出现其他问题,或者如果需要进行任何故障诊断,则您可能不得不创建单独的服务请求。将正常收取支持费用将应用于其他支持问题和不需要进行此特定的修补程序的问题。有关完整列表的 Microsoft 客户服务和支持的电话号码,或创建一个单独的服务请求,请访问下面的 Microsoft 网站:
http://support.microsoft.com/contactus/?ws=support
注意"提供修补程序下载"窗体所显示的此修复程序是可用的语言。如果您看不到您的语言,则是一个修复程序不能用于该语言。

此修补程序的英文版具有文件属性 (或更高版本) 下表中列出。其格式为协调通用时间 (UTC) 列出日期和时间对这些文件。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的日期和时间工具中的 时区 选项卡。
   

   Date         Time   Version            Size    File name
   --------------------------------------------------------------
   05-Sep-2003  18:46  5.0.0.778         281,360  Mq1repl.dll      
   17-Jun-2003  15:33  5.0.0.778          14,096  Mq1sync.exe      
   28-Aug-2003  16:00  5.0.0.783          76,144  Mqac.sys
   05-Sep-2003  18:46  5.0.0.783         217,360  Mqads.dll        
   30-Oct-2002  14:43  5.0.0.761          25,360  Mqbkup.exe       
   05-Sep-2003  18:46  5.0.0.778          76,560  Mqdscli.dll      
   05-Sep-2003  18:46  5.0.0.773          42,256  Mqdssrv.dll      
   21-Oct-2002  18:31  5.0.0.759          98,064  Mqmig.exe        
   05-Sep-2003  18:46  5.0.0.759         265,488  Mqmigrat.dll     
   05-Sep-2003  18:46  5.0.0.740         222,480  Mqoa.dll         
   05-Sep-2003  18:46  5.0.0.784          10,000  Mqperf.dll       
   05-Sep-2003  18:46  5.0.0.783         431,888  Mqqm.dll         
   05-Sep-2003  18:46  5.0.0.778         102,672  Mqrt.dll         
   05-Sep-2003  18:46  5.0.0.776          70,928  Mqsec.dll        
   05-Sep-2003  18:46  5.0.0.783         400,656  Mqsnap.dll       
   05-Sep-2003  18:46  5.0.0.762          23,824  Mqupgrd.dll      
   05-Sep-2003  18:46  5.0.0.782         110,864  Mqutil.dll       
   05-Sep-2003  18:46  5.0.0.748          64,784  Msmq.cpl

				

解决方案

服务包信息

若要解决此问题,获得最新的 service pack,Windows Server 2003 的。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
889100如何获取最新的 service pack,Windows Server 2003 的

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

更多信息

警告 如果注册表编辑器使用不当,您可能会导致严重的问题,可能会要求您重新安装操作系统。Microsoft 不能保证可以解决问题所产生的错误地使用注册表编辑器。使用注册表编辑器需要您自担风险。

此修补程序都有一个重要的限制。应用此修补程序后,您不再可以查看用于从远程计算机的群集队列的性能监视器计数器。这包括本地群集节点。在 Windows 2000 Service Pack 4 (SP4) 和 Windows Server 2003 中,也存在于此限制。

此限制为基础的原因是此修补程序允许的消息队列将性能数据存储在单独的空格,在内存中的不同实例。内存中的每个空间都标有其对应的实例的消息队列的计算机名称。这通常是计算机的在的名称除在群集中。在一个群集名称是虚拟的群集服务的网络名称。 消息队列性能监视器 DLL,Mqperf.dll,查询本地计算机的名称,然后使用以确定要读取性能数据的一组的本地计算机的名称。

这始终工作正常时应用程序访问应用程序运行的位置的计算机的计数器是否该计算机是独立的计算机、 群集的节点计算机或群集的虚拟服务计算机。在这种情况下 Mqperf.dll 是直接由应用程序加载。因此,Mqperf.dll 查询本地计算机的名称,Mqperf.dll 接收回正确的名称。

当您尝试访问远程计算机的计数器时,只会出现问题。在这种情况下 Mqperf.dll 将加载由远程注册表服务。远程注册表服务工作,为预期在一台独立的计算机上,但不支持群集的远程注册表服务。因此,在群集节点上远程注册表服务始终本地运行。在这种情况下当 Mqperf.dll 查询在本地计算机的名称时远程注册表服务始终接收本地群集节点的名称并不是任何一个虚拟群集服务的名称。因此,您可以正确地查看性能监视器计数器,用于从远程计算机本地群集节点。但是,您不能查看虚拟群集服务在那些节点上运行的计数器。即使您指定虚拟群集服务的名称,当您打开计数器时,会出现此问题。 就消息队列是而言,本地群集节点被认为是虚拟的群集服务"远程"。 因此,您甚至不能查看从群集中的本地节点群集的计数器。

有三种可能的解决方法,以解决此问题:
  • 运行该应用程序访问群集的上下文中性能监视计数器。应用程序虚拟群集服务在本地运行。例如对于您可以打开群集的命令提示符,然后在命令提示符下运行该应用程序。

    有关如何设置群集的命令提示符下的信息的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    256975如何安装和配置 Windows 2000 的群集上的消息队列
  • 使用消息队列本地管理 API 来开发一个自定义的应用程序,它监视虚拟群集服务器上的队列。

    有关本地管理 API 的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    242471MSMQ 本地管理 API
  • 您可以添加一个注册表项来监视消息队列的一个群集的实例。您可以执行此本地或远程通过使用下面的注册表项操作:

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters\NetNameForPerfCounters
    数据类型: 字符串
    值: 以大写字符监视虚拟群集服务器的网络名称。

    在添加此注册表项,以使更改生效之后,您必须重新启动消息队列服务。

    注意如果添加了此注册表项 Perfmon 计数器监视消息队列指定的的实例。这是不管哪台计算机访问这些计数器,则返回 true。您不能监视本地节点或甚至从这些计算机上本地运行的应用程序的消息队列,其他群集实例的计数器。如果还原到默认操作行为,您可以访问本地,聚集的计数器,并且您可以在本地或远程访问本地节点的计数器。若要还原到默认行为,删除注册表项。然后重新启动消息队列服务。

属性

文章编号: 267316 - 最后修改: 2014年2月24日 - 修订: 10.0
这篇文章中的信息适用于:
  • Microsoft Message Queuing 3.0
  • Microsoft Message Queuing 2.0
关键字:?
kbnosurvey kbarchive kbmt kbautohotfix kbproductlink kbhotfixserver kbqfe kbwinserv2003presp1fix kbwin2ksp4fix kbbug kbfix kbwin2000presp4fix KB267316 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 267316
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com