Ich habe gestern einen Anruf von einem Kunden erhalten, der sich über eine hohe CPU-Auslastung auf seinem SQL Server beschwert hat. Wir verwenden SQL Server 2012 64-Bit-SE. Auf dem Server wird Windows Server 2008 R2 Standard ausgeführt, 2,20 GHz Intel Xeon (4 Kerne), 16 GB RAM.
Nachdem ich sichergestellt hatte, dass der Schuldige tatsächlich SQL Server war, habe ich mir die oberen Wartezeiten für die Instanz mit der DMV-Abfrage hier angesehen . Die beiden obersten Wartezeiten waren: (1) PREEMPTIVE_OS_DELETESECURITYCONTEXT
und (2) SOS_SCHEDULER_YIELD
.
EDIT : Hier ist das Ergebnis der "Top Waits Query" (obwohl heute Morgen jemand den Server gegen meinen Willen neu gestartet hat):
Wir führen viele intensive Berechnungen / Umrechnungen durch, damit ich verstehen kann SOS_SCHEDULER_YIELD
. Ich bin jedoch sehr gespannt auf den PREEMPTIVE_OS_DELETESECURITYCONTEXT
Wartetyp und warum er der höchste sein könnte.
Die beste Beschreibung / Diskussion, die ich zu diesem Wartetyp finden kann, finden Sie hier . Es erwähnt:
Die Wartetypen PREEMPTIVE_OS_ sind Aufrufe, die das Datenbankmodul verlassen haben, normalerweise an eine Win32-API, und Code außerhalb von SQL Server für verschiedene Aufgaben ausführen. In diesem Fall wird ein Sicherheitskontext gelöscht, der zuvor für den Remote-Ressourcenzugriff verwendet wurde. Die zugehörige API heißt tatsächlich DeleteSecurityContext ()
Meines Wissens haben wir keine externen Ressourcen wie Verbindungsserver oder Dateitabellen. Und wir machen keinen Identitätswechsel usw. Könnte ein Backup dazu geführt haben, dass dies zu einem Anstieg führt, oder möglicherweise ein fehlerhafter Domänencontroller?
Was zum Teufel könnte dazu führen, dass dies der dominierende Wartetyp ist? Wie kann ich diesen Wartetyp weiter verfolgen?
Bearbeiten 2: Ich habe den Inhalt des Windows-Sicherheitsprotokolls überprüft. Ich sehe einige Einträge, die von Interesse sein könnten, bin mir aber nicht sicher, ob diese normal sind:
Special privileges assigned to new logon.
Subject:
Security ID: NT SERVICE\MSSQLServerOLAPService
Account Name: MSSQLServerOLAPService
Account Domain: NT Service
Logon ID: 0x3143c
Privileges: SeImpersonatePrivilege
Special privileges assigned to new logon.
Subject:
Security ID: NT SERVICE\MSSQLSERVER
Account Name: MSSQLSERVER
Account Domain: NT Service
Logon ID: 0x2f872
Privileges: SeAssignPrimaryTokenPrivilege
SeImpersonatePrivilege
Bearbeiten Sie 3 : @ Jon Seigel, wie Sie angefordert haben, hier sind die Ergebnisse Ihrer Anfrage. Ein bisschen anders als bei Paul:
Edit 4: Ich gebe zu, ich bin zum ersten Mal ein Extended Events-Benutzer. Ich habe diesen Wartetyp zum Ereignis wait_info_external hinzugefügt und Hunderte von Einträgen gesehen. Es gibt keinen SQL-Text oder Plan-Handle, nur einen Aufrufstapel. Wie kann ich die Quelle weiter aufspüren?