Microsoft KB Archive/183176

From BetaArchive Wiki
Knowledge Base


PBS: Phone Book Server Performance Counters Missing

Article ID: 183176

Article Last Modified on 9/22/2005



APPLIES TO

  • Microsoft Commercial Internet System 1.0 Service Pack 2, when used with:
    • Microsoft Phone Book Server



This article was previously published under Q183176

SYMPTOMS

The Phone Book Server (PBS) performance monitor object, PBServer Monitor, is missing when you monitor a Phone Book Server remotely with performance monitor (perfmon).

Note: The counters do show up when perfmon is run locally.

CAUSE

This problem has to do with the fact that PBS is a dynamic service. PBS is a dynamic service in that Pbserver.dll loads when the first client requests a list of phone numbers for its region. For this problem to occur, at least one instance of perfmon must be running against the server before PBS loads. If Pbserver.dll is not loaded, then the PBS counters will be missing; this is expected.

The following list contains the events that cause the PBS counters to be missing:

  • Performance monitor is run remotely against a server where PBS is installed, but not yet running. In other words, Pbserver.dll has not been loaded.
  • The first remote instance of perfmon is not shutdown.
  • PBS is subsequently started when a client requests a list of regional phone numbers.
  • Another remote instance of perfmon is run against the server.
  • The perfmon counters are missing from the new instance of perfmon, even though Pbserver.dll is now loaded.

When perfmon is run remotely against a server, Winlogon on the server only loads one instance of the performance counter DLL for that remote instance of perfmon and all subsequent remote instances of perfmon. This means that the open function is only called once when the initial remote instance of perfmon connects. For the open function to be called again requires the close function to be called. The close function is only called when all remote instances of perfmon are closed.

Running perfmon locally against a server is very different from running it remotely on the server. Each instance of perfmon that is run locally loads its own instance of each performance counter DLL. This means the open function for each DLL is called for each instance of perfmon. The open function sets up what is needed to collect the perfmon counter data.

RESOLUTION

Code was added to the Pbsmon.dll collection routine to check to see if a semaphore exists that is created when Pbserver.dll is loaded. If the semaphore exists, then the pbsmon collection routing calls the open routine.

STATUS

Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article.
A supported fix is now available, but has not been fully regression-tested and should be applied only to systems experiencing this specific problem. Unless you are severely impacted by this specific problem, Microsoft recommends that you wait for the next Service Pack that contains this fix. Contact Microsoft Technical Support for more information.


Additional query words: NT Option pack

Keywords: kbbug kbfix kbqfe kbhotfixserver KB183176