Schlagwort-Archive: .NETFramework service

Event 106 MSExchange Common Exchange 2016

Wie jeder gute Exchange Administrator versuche auch ich möglichst  alle Fehler nach einer neuen Installation zu bereinigen, damit man im Fehlerfall den Wald vor lauter Bäumen nicht sieht. Nun habe ich Microsoft Exchange 2016 neu installiert mit CU1 und diese Events 106 haben sehr genervt. Hier mal ein Ansatz wie man diesen Fehlern begegnen kann.

Fehlermeldung im Application Log:

Performance counter updating error. Counter name is Percentage of MSAUserNetID Cache hits for last minute, category name is MSExchange Global Locator Processes. Optional code: 3. Exception: The exception thrown is : System.InvalidOperationException: The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly.

weiter unten im Fehler steht folgendes:

Performance Counters Layout information: FileMappingNotFoundException for category MSExchange Global Locator Processes : Microsoft.Exchange.Diagnostics.FileMappingNotFoundException: Cound not open File mapping for name Global\netfxcustomperfcounters.1.0msexchange global locator processes.

Analyse Teil 1:

Scheinbar fehlt hier eine Datei bzw. sie wird nicht gefunden. Aber welche ist das? Klar es hat was mit .NET Framework zu tun. (P.S. Ich hatte das Feature .NET Framework 3.5 auf meinen Exchange Servern installiert, um die Event 1023 Perflib für MSExchangeIS zu beseitigen.) Also versuchen wir doch mal alle Performance Counter in der Registry neu einzulesen. Einmal den Befehl mit erhöhten Rechten ausführen:

c:\windows\system32>lodctr /r

Das Vorgang dauert ein wenig und in der Console wird am Ende ggf. ein Fehler angezeigt.

Error: Unable to rebuild performance counter setting from system backup store, error code is 2

OK, da stimmt was nicht, also schnell mal in das Application Log schauen, welche Counter nicht funktionieren.

000816

Bei mir funktionieren folgende Counter nicht:

.NET CLR Data service,  .NET CLR Networking service, .NET Data Provider for Oracle service, .NET Data Provider for SqlServer service und .NETFramework service

Alle Counter gehören zum .NET Framework service, also schauen wir in der Registry nach welche Datei geladen werden soll. Unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.NETFramework\Performance\PerfIniFile finden wird die nötige ini Datei. In meinem Fall ist das die „corperfmonsymbols_d.ini“. Eine Suche unter C:\Windows ergab, das die Datei in C:\Windows\Inf\.NETFramework\0000 liegt. Der Inhalt der Datei ist ernüchternd und verweist auf die „corperfmonsymbols.ini“, die ich unter C:\Windows\Inf\.NETFramework fand. Die Datei ist richtig, also sollten wir diese Datei nutzen um die Performance Counter neu zu laden.

Lösung Teil 1:

c:\windows\system32>lodctr C:\Windows\Inf\.NETFramework\corperfmonsymbols.ini

Im ApplicationLog sehen wir jetzt ein Event 1000 indem folgendes steht: Performance counters for the .NETFramework (.NETFramework) service were loaded successfully. The Record Data in the data section contains the new index values assigned to this service.

Wenn wir jetzt erneut die Performance Counter neu einlesen, dann funktioniert alles wunderbar:

000817

Aber:

Nach einem Neustart des Servers sieht man die 106 er Events erneut. Aber die Basis .NET Performance Counter sind in Ordnung – das haben wir geprüft. Also weiter mit der Analyse …

Analyse Teil 2:

Warum und wozu werden die Performance Counter benutzt bzw. aufgerufen, wenn sie gleich beim Systemstart fehl schlagen? Ein Blick in die Registry verrät die Quelle: Die Tasks \Microsoft\Windows\PLA\ExchangeDiagnosticsDailyPerformanceLog und ExchangeDiagnosticsPerformanceLog nutzen diese Performance Counter. OK, das sind die Standard Tasks für Exchange Performance. (P.S. bei Fehler diesen Eintrag lesen: http://www.ftpnet.de/2016/06/29/event-7031-msexchangediagnostics-exchange-2016/ )Also öffnen wir doch mal den Performance Monitor und prüfen ob die Counter „MSExchange Global Locator Processes“ da sind. Nein, ich kann sie nicht finden, die Performance Counter sind nicht registriert. Also werde ich das manuell nachholen.

Lösung Teil2:

Zuerst die nötigen Dateien kopieren (9 Dateien):

<Installationsquelle>\ExchangeServer2016-CU1\Setup\Perf\Gls*.* kopieren nach C:\Program Files\Microsoft\Exchange Server\V15\Setup\Perf

Danach alle Performance Counter für Exchange neu einlesen (ich nutze das Script auf https://support.microsoft.com/de-de/kb/2870416:

.\perfcounter.ps1

Dieser Vorgang dauert etwa 10 – 15 Minuten und sollte ohne Fehler beendet werden (bei mir sind es 275 Perf. Counter). Hinweis: Wenn es einen Fehler mit dem InfoWorkerMultiMailboxSearchPerformanceCounters gibt, dann die InfoWorkerMultiMailboxSearchPerformanceCounters.xml mit einem Editor öffnen und „> Searches“ ersetzen mit „>Searches“. Das Leerzeichen ist zu viel.

Nach dem Serverneustart gibt es weiterhin die Events 106, aber diese haben sich geändert. Die Meldung lautet jetzt:

Performance counter updating error. Counter name is 95th Percentile Overall Latency, category name is MSExchange Global Locator Processes. Optional code: 2. Exception: The exception thrown is : System.InvalidOperationException: Instance ‚_total‘ already exists with a lifetime of Process.  It cannot be recreated or reused until it has been removed or until the process using it has exited.

Dieser Fehler liegt an .NET Framework 2.0 und ist hier beschrieben: https://support.microsoft.com/en-us/kb/971601 bzw. hier: https://social.technet.microsoft.com/Forums/office/en-US/0169ee62-bfeb-4d04-8b3d-3fa60595b1f0/after-upgrade-to-exchange-2013-cu6-application-log-flooded-with-performance-counter-updating-error?forum=exchangesvradmin

Abschluss:

Bisher habe ich noch keinen gültigen Hotfix für Server 2012 R2 gefunden, aber die Performance Counter funktionieren jetzt. Warten wir auf das nächste Cumulative Update.

P.S. Mit Exchange Server 2016 CU 2 sind die „Event 106“ Einträge nur noch Warnungen und keine Fehler mehr im Eventlog.