Kaynak İzleyicisi, SQL Server çalıştıran bir sunucuya verimsiz bir koşul girer

Bu makalede, verimsiz Kaynak İzleyicisi ile ilgili daha fazla bilgi sağlanır.

Özgün ürün sürümü: SQL Server
Özgün KB numarası: 2216485

Belirtiler

Microsoft SQL Server 2008 veya sonraki bir sürümü çalıştıran bir sunucuda, Kaynak İzleyicisi görevi 5 saniyede bir aşağıdaki iletiyi günlüğe kaydeder:

Date_And_Time Server Using 'dbghelp.dll' version '4.0.5'
Date_And_TimeServer **Dump thread - spid = 0, PSS = 0x0000000000000
000, EC = 0x0000000000000000
Date_And_TimeLogon Login succeeded for user 'OPENTEXT\sqlcrmusr'. Connection: trusted. [CLIENT:
IP_Address]
Date_And_Timespid78 Error: 4014, Severity: 20, State: 2.
Date_And_Timespid78 A fatal error occurred while reading the input stream from the network. The session will be terminated.
Date_And_TimeServer ***Stack Dump being sent to Drive:\MSSQL2005\LOG\SQLDump####.txt
Date_And_TimeServer * *******************************************************************************
Date_And_TimeServer *
Date_And_TimeServer * BEGIN STACK DUMP:
Date_And_TimeServer *
Date_And_Timespid 0
Date_And_TimeServer *
Date_And_TimeServer * Non-yielding Resource Monitor
Date_And_TimeServer *
Date_And_TimeServer * *******************************************************************************
Date_And_TimeServer * -------------------------------------------------------------------------------
Date_And_TimeServer * Short Stack Dump
Date_And_TimeServer Stack Signature for the dump is 0x000000000000005C
Date_And_Time,Server,Unknown,Resource Monitor (0x9b0) Worker 0x0000000003A2C1C0 appears to be non-yielding on
Node_#. Memory freed: 0 KB. Approx CPU Used: kernel 0 msnull user 0 msnull Interval:
Interval_value.

Neden

Kaynak İzleyicisi görevi, düşük, yüksek veya sabit olarak sınıflandırılan bellek olaylarını dinlemek için düzenli aralıklarla uyanır. İzleyici, bu olaylar gerçekleştiğinde olay abonelerine bildirir.

Bu bellek olayları SQL Server dışında olabilir. Dış olaylar işletim sisteminden gelen bildirimleri içerir ve sistem genelindedir. Diğer olaylar SQL Server olaylardır. İç olaylar arabellek havuzundan gelen bildirimleri içerir ve işlem genelindedir. Bu tür bildirimler alındığında, çeşitli bellek tüketicileri bellek kullanımını kırpıyor.

Not

Tüketiciler önbellek depoları, kullanıcı depoları veya nesne depoları olan bellek katipleri olabilir.

Belirli bellek tüketicileri büyük miktarda bellek kullanıyorsa, tüketicilerin gerçekleştirdiği kırpmanın hazırlanması uzun sürebilir.

Zamanlayıcı İzleyicisi görevi 5 saniyede bir çalışır. Zamanlama İzleyicisi, Kaynak İzleyicisi'nin son 60 saniye içinde bir tüketiciden diğerine taşınıp taşınmadığını denetler. Zamanlayıcı İzleyicisi, Kaynak İzleyicisi'nin 60 saniye boyunca bir tüketicinin dışına taşınmadığını algıladığında, Zamanlama İzleyicisi bu senaryoyu Kaynak İzleyicisi'nin verimsiz bir duruma girmesi olarak yorumlar. Bu yorum Zamanlama İzleyicisi'nin Belirtiler bölümünde belirtilen hata iletisini günlüğe kaydetmesine neden olur.

Not

SQL Server 2019'dan başlayarak 60 saniyelik aralık 120 saniyeye çıkarılır. Bu artış, bu tanılama bildirimlerinin sıklığını azaltır. Ayrıca bellek dökümü dosyalarının oluşturulmasını azaltır.

Bu iletiler, Kaynak İzleyicisi'nin belleği boşaltma hızı 5 saniyede bir 2 MB'tan azsa da tetiklenir.

Bu iletiler yalnızca Kaynak İzleyicisi'nin büyük tüketicileri temizlemekle meşgul olduğunun göstergesidir. Bu iletilerin Kaynak İzleyicisi'nin kendisiyle ilgili bir sorun olduğunu belirtmesi gerekmez.

Çözüm

Aşağıdaki hizmet paketlerinden başlayarak, verimsiz Kaynak İzleyicisi iletisi, verimsiz koşula yol açan bellek katibini kolayca yalıtmak için genişletir:

  • Microsoft SQL Server 2008 Service Pack 2
  • Microsoft SQL Server 2008 R2 Service Pack 1

Yeni ileti aşağıdaki örneğe benzer:

Resource Monitor (0x9b0) Worker 0x0000000003A2C1C0 appears to be non-yielding on Node Node_#. Memory freed: 0 KB. Last wait: > lastwaittype. Last clerk: type clerk_type, name clerk_name. Approx CPU Used: kernel 0 ms, user 0 ms, Interval: Interval_value.

Bu iletide kullanılan çeşitli alanların açıklamaları aşağıdadır:

  • Bellek boşaltıldı: Bu alan, Kaynak İzleyicisi tarafından belirtilen aralık için ne kadar bellek boşaltıldığıdır. Kilobayt cinsinden ölçülür. Belleğin boşaltılma hızı 5 saniyede bir 2 MB'ı geçmezse Zamanlayıcı İzleyicisi bu koşulu verimsiz bir koşul olarak algılar.

  • Son bekleme: Bu alan, Kaynak İzleyicisi iş parçacığı için son bekleme türüdür. Bu alanı alanla Approx CPU Used birlikte kullanabilirsiniz. Bu alan bileşimi, Kaynak İzleyicisi iş parçacığının çalışıp çalışmadığını veya aralığın önemli bir bölümünü beklediğini belirleyebilir.

  • Son katip: Bu alan, verimsiz koşul oluştuğunda belleğini kırpan bellek katibinin türü ve adıdır.

  • Kullanılan Yaklaşık CPU: Bu alan, milisaniye cinsinden ölçülen Kaynak İzleyicisi tarafından kullanılan çekirdek ve kullanıcı zamanıdır. Kaynak İzleyicisi'nin belirtilen aralıkta ilerleme kaydettiğini doğrulamak için bu alanı diğer alanlarla birlikte kullanabilirsiniz.

  • Aralığı: Bu alan, son katibin milisaniye cinsinden ölçüldüğünün bildirilmesinden bu yana geçen süredir.

Düşük bellek bildiriminin kaynağını belirlemek için bu iletiyi kullanabilirsiniz. ayrıca, iletinin zamanına ait RING_BUFFER_RESOURCE_MONITOR girdilerini de kullanabilirsiniz.

Kaynaklar

RING_BUFFER_RESOURCE MONITOR'un nasıl yorumleneceği hakkında daha fazla bilgi için aşağıdaki teknik bağışıklık blog gönderisine bakın:

Kaynak İzleyicisi görevi, SQL Server bellekle ilgili performans sorunlarını giderebilir. SQL Server bellek bildirimlerini dinler ve yanıtlar. Bu öğeler hakkında daha fazla bilgi için aşağıdaki MSDN blog makalelerine bakın: