Saya menerima telepon kemarin dari pelanggan yang mengeluh tentang penggunaan CPU yang tinggi pada SQL Server mereka. Kami menggunakan SQL Server 2012 64 bit SE. Server menjalankan Windows Server 2008 R2 Standard, 2.20 GHz Intel Xeon (4 Cores), RAM 16 GB.
Setelah memastikan bahwa pelakunya sebenarnya adalah SQL Server, saya melihat contoh menunggu menggunakan instance DMV di sini . Dua menunggu teratas adalah: (1) PREEMPTIVE_OS_DELETESECURITYCONTEXT
dan (2) SOS_SCHEDULER_YIELD
.
EDIT : Ini adalah hasil dari "permintaan tunggu teratas" (walaupun seseorang me-restart server pagi ini atas keinginan saya):
Kami melakukan banyak perhitungan / konversi yang intens, jadi saya bisa mengerti SOS_SCHEDULER_YIELD
. Namun, saya sangat ingin tahu tentang PREEMPTIVE_OS_DELETESECURITYCONTEXT
jenis menunggu dan mengapa itu mungkin yang tertinggi.
Deskripsi / diskusi terbaik yang dapat saya temukan pada tipe tunggu ini dapat ditemukan di sini . Disebutkan:
Jenis menunggu PREEMPTIVE_OS_ adalah panggilan yang meninggalkan mesin database, biasanya ke Win32 API, dan sedang melakukan kode di luar SQL Server untuk berbagai tugas. Dalam hal ini, ia menghapus konteks keamanan yang sebelumnya digunakan untuk akses sumber daya jarak jauh. API terkait sebenarnya bernama DeleteSecurityContext ()
Sepengetahuan saya, kami tidak memiliki sumber daya eksternal seperti server atau filetables yang ditautkan. Dan kami tidak melakukan peniruan, dll. Mungkinkah cadangan menyebabkan ini lonjakan atau mungkin pengontrol domain yang salah?
Apa yang bisa menyebabkan ini menjadi tipe tunggu yang dominan? Bagaimana saya bisa melacak jenis tunggu ini lebih jauh?
Sunting 2: Saya memeriksa isi Log Keamanan Windows. Saya melihat beberapa entri yang mungkin menarik, tetapi saya tidak yakin apakah ini normal:
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
Sunting 3 : @Jon Seigel, seperti yang Anda minta, berikut adalah hasil dari kueri Anda. Sedikit berbeda dengan Paul:
Sunting 4: Saya akui, saya adalah pengguna Extended Events yang pertama kali. Saya menambahkan jenis tunggu ini ke acara wait_info_external dan melihat ratusan entri. Tidak ada sql teks atau pegangan paket, hanya tumpukan panggilan. Bagaimana saya bisa melacak sumber lebih jauh?