Birkaç ay önce, MAXDOP ayarının varsayılan olduğu ve kaçan bir sorgunun tüm işçi iş parçacıklarını tükettiği benzer bir durumla karşılaştım.
Remus'un işaret ettiği gibi buna işçi ipliği açlığı denir .
Bu durum ortaya çıktığında sunucunuzda bir bellek dökümü oluşacaktır.
2008R2 + SP1 ve üstü sys.dm_server_memory_dumps
iseniz, döküm dosyası konumunu da verirsiniz.
Şimdi soruna geri dönelim:
NUMA düğümü başına 1 zamanlayıcı monitör iş parçacığı vardır ve 2 NUMA düğümünüz olduğundan, zamanlayıcının takılı kaldığından emin olurken belirli bir NUMA düğümü için her 60 saniyede bir tüm zamanlayıcıların sağlık denetiminden sorumlu 2 zamanlayıcı monitör iş parçacığı olacaktır. değil.
Zamanlayıcıların işçi kuyruğundan her yeni çalışma isteği alındığında, iş süreçleri sayacı artırılır. Dolayısıyla, zamanlayıcı iş isteği kuyruğa alınmışsa ve 60 saniye içinde çalışma isteklerinden birini işlemiyorsa, zamanlayıcı sıkışmış sayılır.
Bir kaçış sorgusu veya kapsamlı bir paralellik nedeniyle, tüm iş parçacıkları tek bir kaçış sorgusu veya aşırı uzun süreli engelleme tarafından işgal edildiğinden, iş parçacığıların tükenmeye başladığı bir durum ortaya çıkar ve rahatsız edici süreç öldürülmedikçe hiçbir iş yapılamaz.
En iyi seçeneğiniz, önce Maksimum Paralellik Derecesi ayarınızı ayarlamaktır. Varsayılan olarak 0
SQL Server, paralel işleme ve tüm çalışan iş parçacıklarını tüketerek kullanılabilir tüm CPU'ları kullanabilir.
İşçi ipliklerinin tükenmesine yol açabilecek birçok neden vardır:
- SQL Server'ın çalışan iş parçacıklarının bitmesine neden olan kapsamlı uzun engelleme zincirleri
- İşçi ipliklerinin tükenmesine yol açan kapsamlı paralellik
- Her türlü "kilit" için kapsamlı bekleme - kilitler, mandallar. Öksüz kalmış bir spinlock buna bir örnektir.
Cevabım bakın burada size sunucu örneği için MAXDOP değerini hesaplamak nasıl göstereceğim söyledi.
Ayrıca, veritabanı sunucusu örneğiniz hakkında Bekleme istatistikleri bilgileri toplamaya başlamanızı kesinlikle öneririz .
max degree of parallelism
Yapılandırılanın değeri nedir ve şu anda sunucuda NUMA yapılandırmasıyla birlikte kaç işlemciniz var? Sen kullanabilirsinizcoreinfo.exe
gelen sysinternals işlemcileri ve numa yapılandırma sayısını bulmak için.