IIS Application Pool stoppt automatisch – Unexpected exception occured while trying to access the performance counters registry key

Problem

Unexpected exception occured while trying to access the performance counters registry key

Im ULS Log:

Unexpected exception occured while trying to access the performance counters registry key. Exception: System.InvalidOperationException: The Performance Counter OS (pdh) PdhAddEnglishCounter method call failed with error code PDH_CSTATUS_NO_COUNTER. . .

IIS-Anwendungspool wird ständig automatisch beendet

Das manuelle starten des Anwendungspools, sowie das Neustarten des IIS-Webservers bringt keinen Erfolg.

The Performance Counter OS (pdh) PdhAddEnglishCounter method call failed with error code PDH_CSTATUS_NO_COUNTER

PDH = Performance Data Helper

Der Fehler ist im ULS Log zu finden.

HandleShutdown: HandleShutdown was called from: bei Microsoft.Office.Server.Diagnostics.FirstChanceHandler.ExceptionFilter(Boolean fRethrowException

Im ULS Log

ExcelServerApp..ctor: An unhandled exception occurred during boot. Shutting down the server

Im ULS Log

Event-ID: 1000 – Application Error

Name der fehlerhaften Anwendung: w3wp.exe, Version: 8.0.9200.16384, Zeitstempel: 0x50108835

Event-ID: 1025 – .NET Runtime

Anwendung: w3wp.exe
Frameworkversion: v4.0.30319
Beschreibung: Die Anwendung forderte die Beendigung des Prozesses durch System.Environment.FailFast(Zeichenfolgenmeldung) an.

Event-ID: 5002 – WAS

Der Anwendungspool „<ID>“ wird aufgrund einer Serie von Fehlern bei den Prozessen für diesen Anwendungspool automatisch angehalten.

Event-ID: 2026 – Excel Services Application

Interner Fehler.
bei Microsoft.Office.Access.Server.DataServer.PdhPerformanceCounter.Pdh.CheckReturnValue(PDH_STATUS status, Boolean throwOnError, String methodNameForTracing)

Event-ID: 5011 – WAS

Schwerwiegender Kommunikationsfehler im Windows-Prozessaktivierungsdienst bei einem Prozess für den Anwendungspool „<ID>“. Die Prozess-ID ist „7960“. Das Datenfeld enthält die Fehlernummer.

Event-ID: 2004 – PerfNet

Das Serverdienst-Leistungsobjekt kann nicht geöffnet werden. Die ersten vier Bytes (DWORD) des Datenabschnitts enthalten den Statuscode.

Oder

Unable to open the Server service performance object. The first four bytes (DWORD) of the Data section contains the status code.

Event-ID: 6398 – SharePoint Foundation

Ausnahme der Methode ‚Execute‘ der Auftragsdefinition ‚Microsoft.SharePoint.Diagnostics.SPDiagnosticsMetricsProvider‘ (ID <GUID>). Weitere Informationen finden Sie unten.

Aktualisierungskonflikt. Sie müssen diese Aktion wiederholen. Das SPWebService-Objekt wurde von <DOMAIN>\<FarmSvcUser> im Prozess OWSTIMER (1588) auf dem Computer <SP-Server-WFE> aktualisiert. Weitere Informationen zu dem Konflikt finden Sie im Ablaufverfolgungsprotokoll.

Details

Beschreibung

Kurze Zeit nach dem Update der SharePoint-Farm, wird auf einem der fünf SP-Server (WFE) ein IIS-Anwendungspool ständig beendet.

Dieser Anwendungspool (SharePoint Web Services Default) ist bei uns für viele generische SharePoint-Dienste zuständig (wie BCS, Access Services, Machine Translation Service etc.).

Es scheint ein Problem mit „Access Services 2010“ auf nur einem Server zu geben (das bestätigen auch die ULS-Logs). Wird der Dienst auf dem Problemserver in der ZA beendet, dann bleibt der Webanwendungspool auch gestartet.

Der Hinweis auf fehlende Zugriffsrechte auf die Registry-Keys, der in den ULS-Logs auftaucht, wird vom Programm Process Monitor von sysinternals bestätigt.
Dort gibt es sehr viele Zeilen mit „ACCESS DENIED“ auf viele Reg-Schlüssel wie
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib

Process Monitor - HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib - ACCESS DENIED

Der Benutzer, unter dem der w3wp.exe Prozess des Anwendungspools läuft, ist bereits in  der lokalen Gruppe „Leistungsüberwachungsbenutzer“, die auf die betroffene Reg-Keys standardmäßig Leseberechtigungen hat.

Ist-Zustand

SharePoint Umgebung

ULS Log

In den ULS Logs findet man folgenden Eintrag:

Process w3wp.exe
Product Access Services 2010
Category Data Layer
EventID 00000
Level Unexpected
Message Unexpected exception occured while trying to access the performance counters registry key. Exception: System.InvalidOperationException: The Performance Counter OS (pdh) PdhAddEnglishCounter method call failed with error code PDH_CSTATUS_NO_COUNTER. bei Microsoft.Office.Access.Server.DataServer.PdhPerformanceCounter.Pdh.CheckReturnValue(PDH_STATUS status, Boolean throwOnError, String methodNameForTracing) bei Microsoft.Office.Access.Server.DataServer.PdhPerformanceCounter.Initialize() bei Microsoft.Office.Access.Server.DataServer.ExcelServerApp.Initialize()
Name
Component
Result
Error
Process w3wp.exe
Product Access Services 2010
Category Data Layer
EventID 00000
Level Unexpected
Message
Name
Component  
Result  
Error  
Process w3wp.exe
Product Access Services 2010
Category Data Layer
EventID 00000
Level Exception
Message
Name
Component  
Result  
Error  
Process w3wp.exe
Product Access Services 2010
Category Data Layer
EventID 00000
Level Unexpected
Message
Name
Component  
Result  
Error  
Process w3wp.exe
Product Excel Services Application
Category Excel Calculation Services
EventID 2026
Level Warning
Message
Name
Component  
Result  
Error  

Ereignisprotokoll

In der Windows Ereignisanzeige (Event Viewer) sind folgende Event Log Einträge mit der Event-ID: 1000 , ID: 1025, ID: 5002, ID: 2026, ID: 5011 ungefähr zum Zeitpunkt des Starts bzw. des Beenden des Webanwendungspools vorhanden:

Event-ID: 1000

Protokoll(name) Anwendung
Quelle Application Error
Aufgabenkategorie (100)
Ebene Fehler
Ereignis-ID 1000
Details Name der fehlerhaften Anwendung: w3wp.exe, Version: 8.0.9200.16384, Zeitstempel: 0x50108835
Name des fehlerhaften Moduls: unknown, Version: 0.0.0.0, Zeitstempel: 0x00000000
Ausnahmecode: 0x80131623
Fehleroffset: 0x000007fb7a1724b8
ID des fehlerhaften Prozesses: 0xa2c
Startzeit der fehlerhaften Anwendung: 0x01d1122961ff0eea
Pfad der fehlerhaften Anwendung: c:\windows\system32\inetsrv\w3wp.exe
Pfad des fehlerhaften Moduls: unknown
Berichtskennung: a46c01fb-7e1c-11e5-944a-005056a606e1
Vollständiger Name des fehlerhaften Pakets:
Anwendungs-ID, die relativ zum fehlerhaften Paket ist:

Event-ID: 1025

Protokoll(name) Anwendung
Quelle .NET Runtime
Aufgabenkategorie Keine
Ebene Fehler
Ereignis-ID 1025
Details

Event-ID: 5002

Dieser Fehler taucht auf, falls der IIS-Anwendungspool eine definierte Anzahl an Fehlern innerhalb eines definierten Zeitabschnitts produziert hat und deshalb beendet wurde.

Standardeinstellung ist 5 Mal innerhalb von 5 Minuten.
Diese Einstellung kann im Internetinformationsdienste (IIS)-Manager verändert werden (was allerdings keine Lösung ist).
Rechte Maustaste auf den App-Pool > Erweiterte Einstellungen > Kategorie Schutz für schnelle Fehler > Fehlerintervall (Minuten) & Maximale Fehlerzahl.

Protokoll(name) System
Quelle WAS
Aufgabenkategorie Keine
Ebene Fehler
Ereignis-ID 5002
Details Der Anwendungspool „ec123456e9a74c6f9f1cc51e5dc740bb“ wird aufgrund einer Serie von Fehlern bei den Prozessen für diesen Anwendungspool automatisch angehalten.

Oder

Application pool ‚ec123456e9a74c6f9f1cc51e5dc740bb‘ is being automatically disabled due to a series of failures in the process(es) serving that application pool.

Event-ID: 2026

Protokoll(name) Anwendung
Quelle Excel Services Application
Aufgabenkategorie Dienste für Excel-Berechnungen
Ebene Warnung
Ereignis-ID 2026
Details Interner Fehler.
bei Microsoft.Office.Access.Server.DataServer.PdhPerformanceCounter.Pdh.CheckReturnValue(PDH_STATUS status, Boolean throwOnError, String methodNameForTracing)
bei Microsoft.Office.Access.Server.DataServer.PdhPerformanceCounter.Initialize()
bei Microsoft.Office.Access.Server.DataServer.ExcelServerApp.Initialize()
bei Microsoft.Office.Server.Diagnostics.FirstChanceHandler.ExceptionFilter(Boolean fRethrowException, TryBlock tryBlock, FilterBlock filter, CatchBlock catchBlock, FinallyBlock finallyBlock)

Event-ID: 5011

Protokoll(name) System
Quelle WAS
Aufgabenkategorie Keine
Ebene Warnung
Ereignis-ID 5011
Details Schwerwiegender Kommunikationsfehler im Windows-Prozessaktivierungsdienst bei einem Prozess für den Anwendungspool „ec123456e9a74c6f9f1cc51e5dc740bb“. Die Prozess-ID ist „2604“. Das Datenfeld enthält die Fehlernummer.

Event-ID: 2004

Protokoll(name) Anwendung
Quelle PerfNet
Aufgabenkategorie Keine
Ebene Fehler
Ereignis-ID 2004
Details Das Serverdienst-Leistungsobjekt kann nicht geöffnet werden. Die ersten vier Bytes (DWORD) des Datenabschnitts enthalten den Statuscode.

Unable to open the Server service performance object. The first four bytes (DWORD) of the Data section contains the status code.

Event-ID: 1008

Protokoll(name) Anwendung
Quelle Perflib
Aufgabenkategorie Keine
Ebene Fehler
Ereignis-ID 1008
Details Die Open-Prozedur für den Dienst „BITS“ in der DLL „C:\Windows\System32\bitsperf.dll“ war nicht erfolgreich. Die Leistungsdaten für diesen Dienst sind nicht verfügbar. Die ersten vier Bytes (DWORD) des Datenbereichs enthalten den Fehlercode.

The Open Procedure for service „BITS“ in DLL „C:\Windows\System32\bitsperf.dll“ failed. Performance data for this service will not be available. The first four bytes (DWORD) of the Data section contains the error code

Event-ID: 1008

Protokoll(name) Anwendung
Quelle Perflib
Aufgabenkategorie Keine
Ebene Fehler
Ereignis-ID 1008
Details Die Open-Prozedur für den Dienst „FIMSynchronizationService“ in der DLL „C:\Program Files\Microsoft Office Servers\15.0\Synchronization Service\Bin\mmsperf.dll“ war nicht erfolgreich. Die Leistungsdaten für diesen Dienst sind nicht verfügbar. Die ersten vier Bytes (DWORD) des Datenbereichs enthalten den Fehlercode.

The Open Procedure for service „FIMSynchronizationService“ in DLL „C:\Program Files\Microsoft Office Servers\15.0\Synchronization Service\Bin\mmsperf.dll“ failed. Performance data for this service will not be available. The first four bytes (DWORD) of the Data section contains the error code.

Event-ID: 1008

Protokoll(name) Anwendung
Quelle Perflib
Aufgabenkategorie Keine
Ebene Fehler
Ereignis-ID 1008
Details Die Open-Prozedur für den Dienst „WmiApRpl“ in der DLL „C:\Windows\system32\wbem\wmiaprpl.dll“ war nicht erfolgreich. Die Leistungsdaten für diesen Dienst sind nicht verfügbar. Die ersten vier Bytes (DWORD) des Datenbereichs enthalten den Fehlercode.

The Open Procedure for service „WmiApRpl“ in DLL „C:\Windows\system32\wbem\wmiaprpl.dll“ failed. Performance data for this service will not be available. The first four bytes (DWORD) of the Data section contains the error code.

Event-ID: 6398

Protokoll(name) Anwendung
Quelle SharePoint Foundation
Aufgabenkategorie Zeitgeber
Ebene Kritisch
Ereignis-ID 6398
Details Ausnahme der Methode ‚Execute‘ der Auftragsdefinition ‚Microsoft.SharePoint.Diagnostics.SPDiagnosticsMetricsProvider‘ (ID <GUID>). Weitere Informationen finden Sie unten.
Aktualisierungskonflikt. Sie müssen diese Aktion wiederholen. Das SPWebService-Objekt wurde von <DOMAIN>\<FarmSvcUser> im Prozess OWSTIMER (1588) auf dem Computer <SP-Server-WFE> aktualisiert. Weitere Informationen zu dem Konflikt finden Sie im Ablaufverfolgungsprotokoll.The Execute method of job definition Microsoft.SharePoint.Diagnostics.SPDiagnosticsMetricsProvider (ID <GUID>) threw an exception. More information is included below.
An update conflict has occurred, and you must re-try this action. The object SPWebService was updated by <DOMAIN>\<FarmSvcUser>, in the OWSTIMER (1588) process, on machine <SP-Server-WFE>.  View the tracing log for more information about the conflict.

Fix

Workaround (Acces Services auf dem Server beenden)

  1. ZA > Systemeinstellungen > Dienste auf dem Server verwalten
  2. Oben rechts Server auswählen, auf dem das Problem auftritt.
  3. In unserem Fall machen die „Access Services 2010“ auf dem Server Ärger (s. ULS-Logs).
    Nach dem Beenden des Dienstes Access-Datenbankdienst 2010 auf dem Server, wird der Webanwendungspool nicht mehr beendet.

Lösung

Leistungsüberwachungsbenutzer Gruppe

Prüfen, ob die Benutzerkennung, unter welcher der Anwendungspool (und somit der w3wp.exe Prozess) läuft, Mitglied in der lokalen Gruppe der Leistungsüberwachungsbenutzer (Computerverwaltung) ist.

Die Benutzerkennung kann man folgendermaßen herausfinden:
Entweder im IIS unter Anwendungspools den Pool finden (GUID), der ständig gestoppt wird (nicht „SharePoint Web Services Root“) und somit im Event-Log mit der ID: 5002 auftaucht. Die Dazugehörige Kennung aus der Spalte Identität (User Name) brauchen wir.
Internetinformationsdienste (IIS)-Manager - Anwendungspools - App Pool Name (ID) - Identität (Service Account)
Oder in der SharePoint 2013-Verwaltungsshell:
Get-SPServiceApplicationPool | ft ID, Name, ProcessAccountName -AutoSize
Die Benutzerkennung, die in der Spalte ProcessAccountName auftaucht und zur ID des Anwendungspools aus den Event-Logs passt, die muss Mitglied in der lokalen Gruppe Leistungsüberwachungsbenutzer sein/werden.

Prüfen, ob die lokale Gruppe Leistungsüberwachungsbenutzer das Recht Lesen auf den Registry-Schlüssel
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
und Unterschlüssel (durch Vererbung) hat.
Registry - Perflib - Leistungsüberwachungsbenutzer - Lesen

Performance Counters (Leistungsindikatoren)

Die Stichwörter aus den ULS-Logs und Event Logs wie
bitsperf, Leistungsdaten, Performance data, Perflib, PerfNet, Leistungsobjekt, performance object, Pdh, PdhPerformanceCounter, PDH_CSTATUS_NO_COUNTER, PdhAddEnglishCounter
lassen auf defekte Performance Counter Daten schließen.

Mit
lodctr /q
lassen sich alle Leistungsindikatoren und deren Status auflisten.

In unserem Fall war nur der Indikator [ASP.NET_2.0.50727] mit dem Status (Disabled), der Rest hatte den Status (Enabled) – und das ist OK so.
Falls andere Indikatoren deaktiviert sind, dann kann man sie folgendermaßen aktivieren:
lodctr /e:<provider name>

Die Lösung des Problems war in unserem Fall das neu Erstellen der Leistungsindikatoreinstellung aus dem Systemsicherungsspeicher mit dem Befehl (Administrator-Kommandozeile):
lodctr /r

Nach der Erfolgsmeldung:
Info: Die Leistungsindikatoreinstellung konnte erfolgreich aus dem Systemsicherungsspeicher neu erstellt werden.
Konnte der Anwendungspool im IIS gestartet werden und lief nach diesem Vorgang stabil.

Links

  1. social.msdn.microsoft: SharePoint application pool account and event log erros
  2. support.microsoft.com: Excel Services 2010 error – Unable to process request
  3. msdn.microsoft.com: Checking Counter Data Status Codes
  4. social.technet.microsoft: C:\Windows\system32\bitsperf.dll“ failed
  5. support.microsoft.com: How to manually rebuild Performance Counter Library values

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.