Aracılığıyla paylaş


Kaynak süresine sorun giderme

Bu konuda kaynak süresine kullanırken ortaya çıkabilecek koşullar için sorun giderme kılavuzu sağlar.Bu kılavuz aşağıdaki kategoriler düzenlenir:

  • Hataları

  • Beklenmeyen sonuçlar

  • Performansla ilgili sorunlar ve hatalar

Kaynak süresine hataları

Kaynak süresine hata iletileri yapılandırma ve kaynak süresine kullanarak ilgili tüm eylemleri kapsar.

Aşağıdaki tablo hata iletileri kaynak süresine örnekleri sağlar ve hata iletisinde açıklanan sorunu gidermek rehberlik sağlar.

Hata numarası

Hata iletisi

Çözüm

8645

'MyTestPool' kaynak havuzunda sorguyu yürütmek için bellek kaynakları beklenirken zaman aşımı oluştu. (257).Sorguyu yeniden çalıştırın.

Ya da daha yüksek veya sunucuya sorgu yükü azaltmak için zaman aşımı değerini yapılandırın.

8651

İstenen bellek grant 'myTestPool' kaynak havuzunda kullanılabilir olmadığı için işlem gerçekleştirilemedi (257).Sorguyu yeniden çalıştırın, sorgu yükü azaltmak veya kaynak süresine yapılandırma ayarını denetleyin.

Sorgu sırasında daha sonra yeniden çalıştırın saat.Sunucu üzerinde sorgu yükü azaltmak.Yönetici kaynak süresine yapılandırma ayarını denetlemek için alın.

8657

Maksimum yapılandırma sınırı aştığı için 1024 KB bellek grant alınamadı iş yükü grubu 'myTestGroup' (267) ve kaynak havuzu 'myTestPool' (257).Bellek Kullanım sınırı artırmak için sunucu yöneticinize başvurun.

Bellek tüketen sıralama ve karma birleştirmek gibi işlemleri azaltmak için sorguyu yeniden yazın.Bir daha yüksek bellek kullanım sınırı izin vermek için sistem yöneticinizden isteyin.

Bir yönetici, aşağıdakilerden birini veya her ikisini şu parametreleri ayarlayabilirsiniz:

  • max_memory_percent kaynak havuzları tüm sorgular için en fazla fiziksel bellek grant alanı ayarlar hangi.

  • request_max_memory_grant_percent iş yükünü grupları üzerinde yerleþtirdikten başına-sorgu-sınırı.

Bir yönetici, gerçek fiziksel sınırının dışında elde edebilirsiniz max_target_memory_kb sütun dan sys.dm_exec_query_resource_semaphores.

Başına-sorgu-sınırı tarafından hesaplanan max_target_memory_kb * request_max_memory_grant_percent.

NotNot
Yöneticinin hata iletisinde belirtilen gerekli bellek başına-sorgu-sınırı yukarıda hesaplanan çok daha küçük olduğundan emin olun gerekir.Ancak, onu bu artan xxx'te request_max_memory_grant_percent büyük sorgu eşzamanlılık azaltma bir yan etkisi yoktur.Örneğin, kullanıcıların yüzde 40'ını ayarıyla varsayılan ayar yüzde 25 ile üç büyük sorgular, ancak yalnızca iki büyük sorguları çalıştırmak bekleyebilirsiniz.

10900

Başlangıç sırasında kaynak süresine yapılandırılamadı.Belirli hata iletileri için sql Server hata günlüğü denetleyin veya tutarlılığını kontrol asıl veritabanı dbcc CHECKCATALOG('master') çalıştırarak.

"dbcc CHECKCATALOG('master')" çalıştırmayı deneyin.

10901

Kullanıcı kaynak süresine yapılandırma değiştirme izni yok.

Değişiklik, kaynak süresine izin izni yapılandırma ve yeniden deneyin.

10902

Kullanıcı tanımlı işlev 'dbo.rgclassifier_v1' içinde yok asıl veritabanı, veya kullanıcı erişim için izni yok.

Sınıflandırıcısı kullanıcı tanımlı bir işlev (udf) oluşturmak ana veya varolan Sınıflandırıcısı udf üzerinde gerekli izinleri verin.

10903

Belirtilen şema adı 'dbo' Sınıflandırıcısı için kullanıcı tanımlı bir işlev ya da yok veya kullanıcı kullanmak için izni yok.

Başka bir şema adı deneyin veya bu şema için doğru izinleri alın.

10904

Kaynak süresine yapılandırma başarısız oldu.Bırakılan veya farklı kaynak havuzları için taşınabilir iş yükünü grupları etkin oturumları vardır.Tüm etkin oturumlar etkilenen iş yükünü gruplar halinde kesin ve yeniden deneyin.

Etkilenen grubu/grupları tüm etkin oturumlar bağlantısını kesin ve yeniden deneyin.

NotNot
Bu sürüm, kaynak süresine grupları olduğunda açık oturumları bunları havuzları arasında taşıma izin vermez.

10905

Yeterli bellek olmadığından kaynak süresine yapılandırma işlemi tamamlanamadı.Sunucu yükünü azaltmak veya adanmış yönetici bağlantısı üzerinde işlem deneyin.

Sunucu üzerindeki yükü azaltmak veya bir yapılandırma işlemi adanmış yönetici bağlantısı kullanmayı deneyin.

10906

Nesne 'dbo'. 'rgclassifier_v1' bir geçerli kaynak süresine Sınıflandırıcısı kullanıcı tanımlı bir işlev değil.Geçerli Sınıflandırıcısı kullanıcı tanımlı bir işlev gerekir şemaya bağlı olması, sysname dönmek ve herhangi bir parametre vardır.

Geçerli bir Sınıflandırıcısı udf sağlar.Geçerli bir Sınıflandırıcısı udf gerekir:

  • Sysname dönün.

  • Hiçbir parametre vardır.

  • Ema BALAMA seçeneğiyle oluşturulması.

10907

'min_cpu_percent' özniteliği değeri 50 ile öznitelik 'max_cpu_percent' büyüktür değeri 40.

Daha az olan bir minimum değer sağlamak veya bu değere eşit en büyük.

10908

Öznitelik 'max_memory_percent' değeri 40 'min_memory_percent' öznitelik azdır 60 değer ile.

Büyük ya da en az bir öznitelik değerine eşit olan en büyük bir değer girin.

10909

Kaynak havuzu oluşturulamıyor.Kaynak havuzları sayısı 20, önceden tanımlanmış kaynak havuzları dahil olmak üzere geçerli sınırı aşamaz.

Gerekli olan kaynak havuzları bırakın.

10910

İşlem tamamlanamadı.Belirtilen 'MIN_CPU_PERCENT' değer, 25 toplamı minimumlarý, yüzde 100 aşmak için tüm kaynak havuzları neden olur.Değerini azaltın veya diğer kaynak havuzları toplamı 100'den az olacak şekilde değiştirin.

MIN_CPU_PERCENT için değerini azaltın.

10911

Kaynak havuzu için 'myTestPool2' istenen işlem gerçekleştirilemiyor yok.

Sorgu sys.resource_governor_resource_pools hangi kaynak havuzları şu anda tanımlanmış görmek için Görünüm katalog.Varolan havuzunu seçebilir veya yeni bir havuzu oluşturabilirsiniz.

10912

İşlem tamamlanamadı.Önceden tanımlanmış bırakma iş yükü grubu izin verilir.

Kullanıcı tarafından oluşturulan seçin iş yükü grubu bırakmak için.

10913

Kullanıcıları silmek için izni yok iş yükü grubu 'iç' içinde 'iç' Kaynak havuzu.

Oluşturma iş yükü grubu bir kullanıcı tarafından oluşturulan havuz veya varsayılan havuzu.

10914

Adı iş yükü grubu '#mygroup' # ile başlayamaz ##.

# Veya bir grup veya havuzu oluşturma ## when kullanmayın.

10915

İşlem tamamlanamadı.'İç' değiştirme iş yükü grubuizin verilmez.

Kullanıcı tarafından oluşturulan havuz ya da değiştirmek için grubu seçin.

Notdeğiştirme varsayılan grup veya kaynak havuzu yapılandırma verilir.

10916

'MyTestPool' kaynak havuzu bırakamazsınız içerdiği nedeniyle iş yükü grubu 'myTestGroup'.Bırakın bırakılmadan önce bu kaynak havuzu kullanarak tüm iş yükünü grupları veya kaldırabilirsiniz.

Bırakın veya bu havuzu kullanan tüm iş yükünü grupları taşıyın ve sonra havuzu bırakın.

10917

alter iş YÜKÜNÜ Grup başarısız oldu.Ya da bir 'ile' ya da 'USING' yan tümce tümce tümcesinde belirtilmelidir.

Ya da 'ile' kullanın ya da 'USING' yan tümce tümce tümcesini alter iş YÜKÜNÜ group deyim.

10918

Kaynak havuzu 'myTestPool' oluşturulamıyor zaten varolduğu için.

Farklı kaynak havuzu adı seçin.

10919

Kaynak süresine yapılandırmasından okunurken bir hata oluştu asıl veritabanı.Kontrol bütünlük asıl veritabanı veya sistem yöneticisine başvurun.

"dbcc CHECKCATALOG('master')" çalıştırmayı deneyin.

10920

Kullanıcı tanımlı işlev 'dbo.myclassifer' bırakamazsınız.Bir kaynak süresine Sınıflandırıcısı kullanılıyor.

Yok.

10921

'default' iş yükü grubu'varsayılan' dışına taşınamaz. Kaynak havuzu.

Uygulanamaz.

10981

Kaynak süresine yeniden yapılandırılması başarılı oldu.

Bu ileti sql Server olay günlüğüne yazılır.

10982

Kaynak süresine Sınıflandırıcısı kullanıcı tanımlı işlev çalıştırılamadı.sql Server hata günlüğü ' önceki hataları görmek oturum Ayrıntılar için kimliği 58.Sınıflandırıcısı geçen saat: 800 ms.

Bu ileti, sql Server yazılır hata günlüğü.

Notönceki sql Server iletileri hata günlüğü ile aynı sunucu işlemi tanımlayıcısı (SPID) belirli bir başarısızlık nedenleri sağlayabilir.Uzun süre çalışan Sınıflandırıcısı kullanıcı oturum açma zaman aşımı neden olabilir.istemci oturum açma saat aşımı Sınıflandırıcısı geçen süreyi aşıyorsa denetleyin.

10983

Kaynak süresine yeniden yapılandırılması, kullanıcı tarafından iptal edildi.

Uygulanamaz.

10984

Kaynak süresine yeniden yapılandırılması başarısız oldu.

Uygulanamaz.

Beklenmeyen sonuçlar

Beklenmeyen sonuçlar burada çeşitli öğeler, kaynak süresine çalışmaktadır, ancak sonuçlar değil beklediğiniz durumlar açıklanmaktadır.Örneğin, oturum sınıflandırma düzgün çalışması için görünür veya bırakarak ya da iş yükünü grupları oluşturma ile ilgili sorunları vardır.

Oturum sınıflandırma

Oturumları için varsayılan gider iş yükü grubu ne zaman aşağıdaki koşullar:

  • udf Sınıflandırıcısı yok veya etkin değil.

  • udf Sınıflandırıcısı orada bir kusur işlev mantığı gösterir soldadır.

Temel sorun giderme

udf sınıflandırma için kullanılabilir hiçbir Sınıflandırıcısı vardır sonra tüm oturumlar için varsayılan otomatik olarak gidecek iş yükü grubu.Bir udf Sınıflandırıcısı oluşturduktan sonra kaynak süresine ile kayıtlı olduğunu ve bellek içi yapılandırma güncelleştirilmiş olduğunu doğrulamak gerekir.

Oluşturma, kaydetme ve etkinleştirme bir Sınıflandırıcısı udf üç adım işlemdir:

  • İlk olarak, işlev oluşturmak gerekir.

    CREATE FUNCTION function_name() RETURNS <something> 
    WITH SCHEMABINDING
    
  • İkinci olarak, işlev ile kaynak süresine kaydetmek gerekir.

    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=schema_name.function_name)
    
  • Üçüncü olarak, kaynak süresine bellek içi yapılandırma güncelleştirmeniz gerekmez.

    ALTER RESOURCE GOVERNOR RECONFIGURE
    

Sınıflandırma sorun giderme olduğunu doğruladığınızda, oluşturduğunuz işlev kaynak süresine ve yapılandırma ile kayıtlı olduğunu yapmanız ilk şey güncelleştirildi.Şema adı edinmek için aşağıdaki sorgu kullanın (schema_name) ve Sınıflandırıcısı işlev adı (function_name) için kaynak süresine kullanmakta udf Sınıflandırıcısı.

USE master
SELECT 
      object_schema_name(classifier_function_id) AS [schema_name],
      object_name(classifier_function_id) AS [function_name]
FROM sys.dm_resource_governor_configuration

Burada udf Sınıflandırıcısı değişti ancak kaynak süresine hala önceki işlev mantığı oturumları sınıflandırmak için kullandığı bir senaryo ilgili sorunları gidermek için yukarıdaki yaklaşım kullanabilirsiniz.Bu davranış, yaptığınız değişiklikler bellek içi yapılandırma uygulandı gösterir.

Gelişmiş sorun giderme

Beklenen sonuçlar üretmek ya da kaynak yoğun olan bir çok karmaşık Sınıflandırıcısı işlev oluşturabilirsiniz.Temel sorun giderme yaptıysanız, sonra işlev mantığı ses olduğunu doğrulamanız gerekir.En kötü durum senaryosunda, bir kodlama kusur biridir sonuçlar sonsuz bir döngüye veya kaçan bir sorgu.

Adanmış yönetici bağlantısı (dac), çünkü dac bir sınıflandırmaya tabi değildir ve kaynak süresine çalışan ve gelen oturumları sınıflandırma kullanılabilir Sınıflandırıcısı işlev yazılan kötü sorun gidermek için kullanabilirsiniz.Daha fazla bilgi için bkz: Adanmış yönetici bağlantısı kullanma.

Not

Bir dac sorun giderme için kullanılabilir durumda değilse, tek kullanıcı modunda sistem yeniden başlatabilirsiniz.Tek kullanıcı modu sınıflandırmaya tabi olmamasına rağmen çalışırken kaynak süresine sınıflandırma koyamıyor.

Aşağıdaki sorgulayarak Sınıflandırıcısı işlev hakkında bilgi edinebilirsiniz:

  • sys.dm_exec_query_stats.(contains statement information but not the actual function)

  • sys.dm_exec_sql_text(birlikte kullanın sql_handle alınan sys.dm_exec_query_stats)

  • PreConnect:Starting Event Class (kimliği ve adı Sınıflandırıcısı işlev sağlar)

Başarısız yeniden yapılandırın

Kaynak süresine meta veriler değişiklikleri kaynak süresine alter yeniden YAPILANDIRMANIZ deyim tamamlanıncaya kadar oturumları çalışmasını ayrı tutar.Etkin veya açık oturumu içeren bir grup bırakmak deneyin kaynak süresine alter yeniden YAPILANDIRMANIZ başarısız olur veya bir kaynak havuzu bırakma çalışırsanız, iş yükünü grupları içerir.

Bellek içi ve saklı elde etmek için yapılandırma, sorgu sys.dm_resource_governor_configuration ve sys.resource_governor_configuration sırasıyla.Değeri için 1, is_reyapılandırma_pending (sys.dm_resource_governor_configuration) belirten oturum yapılandırma henüz güncelleştirilmemiş.Bu ise durum, seçenekleriniz şunlardır:

  • Son veya bunların bağlantıyı kesmek için oturumlarının bekleyin.

  • Açık etkin oturumunu durdurmak veya oturum bağlantısı bırakın.

  • Grup ya da size bırakılan havuzu oluşturmanız, kendi ayarlarını belirlemesini ve kaynak süresine alter yeniden YAPILANDIRMANIZ yeniden çalıştırın.

Performansla ilgili sorunlar ve hatalar

Burada görünüyorsa, kaynak süresine kullandığınızda performans sorunları için kaynak süresine göre soruna neden olup olmadığını belirlemek duyduğunuz yapılandırma.Bu bölümde sağlanan sorun giderme kılavuzu, iki kategoriye ayrılır:

  • Oturum sınıflandırma

  • Sorgu yürütme

Oturum sınıflandırma

Uzun süreli oturum açma tetikleyici veya Sınıflandırıcısı kullanıcı tanımlı bir işlev (udf) sunucusunun performansı üzerindeki etkisi olabilir.Oturum açma tetikleyici veya udf Sınıflandırıcısı tamamlanması uzun saat alıyorsa, bağlantı saat aşımına uğradı.Ancak, çalıştırın ve sunucu kaynaklarını kullanmak tetikleyici veya işlev eder.

Pre-connected bir durumda çalıştırılan oturumları vardır şüpheleniyorsanız, adanmış bir yönetici bağlantı kullanarak ve kontrol Bağlantı öncesi: Event Class başlangıç birden çok istek veya başlatılmış ama tamamlanmamış oturumları olup olmadığını görmek için.

Bu sorunu gidermek ve yeniden oluşmasını engellemek için:

  • Oturumları Durdur

  • Uzun süren bir işlev veya oturum açma tetikleyici olası nedenlerini belirle

  • Kaldırma ve tetikleyici replace veya işlev , soruna neden olan

Sorgu yürütme

Sınıflandırılmış ve yürütülen sorgu sonra yanıt vermemeye (askıda kalabilir) veya başarısız olarak görünebilir.Geçerli ayarları kaynak süresine neden olabilir olduğundan şüphe ediyorsanız.Aşağıdaki noktalarda, kendi kaynak süresine araştırmak gerek yapılandırma:

  • İstek sayısı azaltma

  • cpu sınırı

  • cpu bant genişliğini azaltma

  • Bellek grant boyutu

  • Bellek verme zaman aşımı hatası

  • Yetersiz bellek hatası

  • Hassasiyetli sorgu planı

Azaltma isteği sayısı

Bu senaryoda, istek sayısı azaltılır şüphe ve kullanıcı performans düşüşü raporlar.

Yapmanız gereken ilk şey, istek sayısını azaltmayı açıkça, kullanıcı grubu için yapılandırılmış olup olmadığını doğrulamak olur.group_max_requests ayarı etkin olup olmadığını görmek için kullanıcının grup üyeliğini kontrol ederek bunu.group_max_requests etkin olması hiçbir açık istek sayısı azaltma.Araştırmanız gerekir aşağıdaki adımları göre daha fazla.

  • Sorgu sys.dm_os_waiting_tasks görmek istekler bekliyor, resmgr_throttled bekleme türü.İstek sayısını azaltmayı bu bekleme türü varlığını gösterir.

  • Performans İzleyicisi'ni başlatmak ve verileri kullanarak toplama sıraya alınan istekler ve etkin istekleri sayaçları.Sıfır olmayan sıraya alınan istek sayısını azaltma isteği gösterir.

  • Olmadığını kontrol etkin istekleri değerle eşleşen group_max_requests ayarı.If the Active requests value is higher than the GROUP_MAX_REQUESTS setting, the group may have requests that cannot be throttled (for example, open transactions).

  • If Queued requests is zero, check the Active requests of all the workload groups sharing the same resource pool because the pool may have been overloaded with too many requests.

cpu sınırı

Kaynak süresine olay üretimi tarafından yönlendirilen bir ilkesi varsa, en yüksek cpu sınırına ulaşıldığında oluşturan olayın kullanabilirsiniz.

Bu senaryoda, çok fazla cpu kullanan bir sorgu algılamak için yapılandırılan en fazla cpu sınırını (REQUEST_MAX_CPU_TIME_SEC) çok düşük olup olmadığını belirlemek istiyorsunuz.

Aşağıdaki eylemleri cpu sınır ayarı doğrulamak yardımcı olur.

  • sql izleme oturum başlatmak ve toplama cpu eşiği aşıldı olay.Kullanıcı isteği cpu kullanım sınırına ulaştığında, sunucu sql izleme olay otomatik olarak oluşturur.Ayarınızı çok düşükse, bu olaylar çok sayıda üretilecektir.

Not

Bu olay olaya tepki verir bir komut dosyası yazmak için sunucu olay bildirim olarak ortaya çıkar.

  • Performans İzleyicisi'ni başlatmak ve verileri kullanarak toplama en fazla cpu saat (ms) istek sayaç.Bu sayacın değeri bir kılavuz olarak uygun sınırı ayarlamak için kullanabileceğiniz iş yükü grubu.

cpu bant genişliğini azaltma

Bu senaryoda, cpu bant genişliği nedeniyle bastırma şüpheleniyorsanız cpu kullanımı % performans sayacı veya kaynak süresine max_cpu_percent ayarı'e yakın olur.cpu kullanımı % değeri için tüm iş yükünü grupları ve kaynak havuzları için aşağıdaki sorgu döndürür bir SQL Server örnek.

select * from sys.dm_os_performance_counters where counter_name = 'cpu usage %'

Daha fazla bilgi için bkz: sys.dm_os_performance_counters (Transact-sql).

Sisteminizde aşağıdaki denetimleri gerçekleştirerek cpu bant genişliği daraltma olup olmadığını belirleyebilirsiniz.

  • Toplam sunucu cpu kullanımını denetleyin.sql Server dışında bir yükü etkin değilse, sorun gidermeye çalışıyorsanız sorgu etkileyebilir.

  • cpu kullanımı kaynak havuzları arasında dağıtımını denetleyin.cpu kullanımı için yapılandırılmış yüksek bir minimum değer başka bir havuza sahip olduğu kaynak havuzu bastırma.Sayaçlar için beklenen (Hesaplanan cpu kullanımı) gerçek cpu kullanımına karşı karşılaştırın.

  • Söz konusu kaynak havuzuna atanan iş yükünü gruplarını denetleyin.Diğer iş yükünü grupları yük aynı havuzunu paylaşan kullanıcıları etkileyebilir.

  • cpu kullanımı dağıtımını planlayıcılar kontrol edin.İncelediğiniz sorgunun uzun süre çalışan sorguları içeren bir Zamanlayıcı üzerinde yerleştirilmiş olabilir.Bu durum, sorguyu bastırma gibi görünebilir ancak eşit olmayan yük planlayıcılar arasında dağıtımını gerçek sorundur.

  • Burada iş yükünü kaynak süresine ayarları tarafından bastırma yerine diğer oturumları engellendi olası durumlar için denetleyin.

  • Sistemde şu anda çalışan sorgu oturumları sayısını denetleyin.Eş zamanlı yürütülen istek sayısı arttıkça, sql Server bunların tümünü en az miktar CPU güvenceye dener saat cpu artırılarak.

Bellek Grant boyutu

Bu senaryoda, grant bellek boyutu bir sorgu yavaş çalışmasına neden olduğundan kuşkulanıyorsanız.

Kaynak süresine grant bellek büyük sorgular böylece azaltarak maksimum sorgu bellek sınırını zorlayan uyma sınırı içinde.Bellek grant % 100'den küçük bir sorgu alırsa, geçici veri spill ve dikkat çekici bir performans etkisi olan bir diske yazmak gerekli olabilir.

Sorgular büyük yüzdesini belirlemek gereken küme uygun maksimum sorgu boyutu sınırı.Aşağıdaki eylemleri en iyi ayarları belirlemek yardımcı olacaktır:

  • Sorgu sys.dm_exec_query_memory_grants görmek geçerli durumunu bellek verir.The ideal_memory_kb column shows the ideal amount based on the cardinality estimate.The requested_memory_kb column shows the asking amount which could have been reduced after reaching the maximum query limit.If requested_memory_kb is significantly lower than ideal_memory_kb, then the query may end up spilling frequently (assuming that the cardinality estimate is correct).

  • Performans İzleyicisi'ni başlatmak ve verileri kullanarak toplama daha az bellek verir/sn sayaç.Bu sayacın değeri en fazla istek boyutu sınırını vurarak sonra ideal tutardan daha az alınan bellek grant Count hızını temsil eder.Büyük sorguları bellek sınırları içinde kalmak için diske spill gerektiğinden ideal bir tutarla olandan çok daha yavaş çalışabilir.

Hafifletmek için bir bellek vermek sorun, havuz boyutu sınırı veya en büyük bellek boyutu sınırı artırmak zorunda kalabilirsiniz.

Not

Yalnızca en büyük bellek boyutunu artırmak istiyorsanız, bu büyük sorgular için azaltılmış eşzamanlılık neden olabilir.

Bellek verme zaman aşımı hatası

Bu senaryoda, bir sorgu bellek verme zaman aşımı hatası ile başarısız olur.

Etkin belleğin bölümlerinin toplam sayı vermek istekleri ve belirtilen bellek sınırlarını iş yükü grubu ve kaynak havuzu tanımları içinde bellek verme zaman aşımı rol çalabilir.Bir tek kaynak havuzuna birden çok kaynak grupları tarafından paylaşılıyorsa, diğer gruplarda eşzamanlı sorguları sayısını bellek verme zaman aşımı da etkileyebilir.

Aşağıdaki eylemleri en iyi kaynak havuzu ayarlarını belirlemek yardımcı olacaktır:

  • Sorgu sys.dm_exec_query_memory_grants bellek verir ve bu grup ve bekleyen sorguları sayısını görmek içinhavuz.

  • Sorgu sys.dm_exec_query_resource_semaphores görmek toplam verilen bellek ve hedefler.

GRANT bellek kullanımı kullanılabilir bellek alanından daha büyük olduğunda, kaynak havuzu boyutu sınırını artırmayı düşünebilirsiniz.

Yetersiz bellek hataları

Bir sorgu bir yetersiz bellek hatası ile başarısız olur.

Temel sorun giderme

Aşağıdaki eylemleri en iyi belirlemenize yardımcı olacaktır iş yükü grubu ayarları:

  • Sorgu sys.dm_os_memory_brokers denetleme göreli bellek dağıtım ve eğilim içinde kaynak havuzu.Çok küçük bir bellek alanında çok fazla istek yüklenmiş bir yol açabilecek iş yükü grubu/resource havuzu ve bellek hataları nedeni.

  • Performans İzleyicisi'ni başlatmak ve bellek verir, önbelleğe alınan bellek ve derleme/İyileştirici bellek için geçerli bellek kullanımını ve hedef almak için bellek ile ilgili kaynak havuzu sayaçları kullanarak veri toplamak.Geçerli değerler hedef değerden daha büyükse, kaynak havuzu aşırı anlamına gelir.Havuzu bellek sınırlarını değiştirmeyi düşünün.

  • Performans İzleyicisi'ni başlatmak ve verileri kullanarak toplama en büyük bellek grant isteği sayaç.Sayaç değeri request_max_memory_grant_percent ayarı tarafından belirlenen değeri aşıyor, iş yükü grubu, büyük olasılıkla bir sorgu başarısız olur.Değiştirmeyi düşünün iş yükü grubu sınırı.

Gelişmiş sorun giderme

Genel görevleri ayırma girişimi olduğunda döndürülen hata bellek yetersiz (701) hatası olan bir blok bellek Bellek Yöneticisi ve girişimi başarısız olur.Daha fazla bilgi için bkz: MSSQLSERVER_701.

Aşağıdaki koşullar, bu hataya neden olabilir:

  • Bellek havuzu toplam sınırına ulaşır.

Not

Kaynak süresine, bu koşulun yegane nedeni olabilir.Bu koşul için katkıda bulunan bellek talepleri olan sunucu üzerinde çalışan diğer uygulamalar olabilir.

  • Multi -sayfa veya sanal adres alanı boş bloğu gerekli rezervasyon için yeterince büyük olmadığı için sanal adres alanı ayırma başarısız olur.Bu bir 32-bit mimarisi ve 64-bit mimarisi üzerinde gerçekleşmesi nadiren ortaya en yüksektir.

  • Multi -sayfa veya yürütme sınırı toplam taahhüdü ulaşır çünkü sanal adres alanı ayırma başarısız olur.Bu, hem 32 bit hem de 64-bit mimariler için geçerlidir.

Bellek yetersiz hatası, gördüğünüzde hata günlüğü ise en iyi başlangıç noktasının hata araştırma için.Aşağıdaki örneğe benzer bir çıktı günlüğü içerir:

2006-01-28 04:27:15.43 spid51 Failed allocate pages: FAIL_PAGE_ALLOCATION 1

Olası hataları kaydedildiği hata günlüğü şunlardır:

  • Ayırmaya çalıştı sayfalarının sayının FAIL_PAGE_ALLOCATION,

  • Rezerve etmek için çalıştı bayt sayı ile takip FAIL_VIRTUAL_RESERVE,

  • FAIL_VIRTUAL_yürütme, izlediği için çalıştı bayt sayısıyürütme

Bellek yetersiz hatası tetikleyen görev hatası nedeniyle görev genellikle tanımadığını anlamak önemlidir.Kaçan bir görev değilse yetersiz bellek durumu genellikle birden fazla çalışan görevler culmination'dır.Sonuç olarak, FAIL_PAGE_ALLOCATION hata yaygın durum kullanarak, kendi araştırma Sistem etkinliğini daha geniş bir görünümünü uygulamanız gerekir.

Sonraki değerli bilgiyi hata günlüğü bellek durumunu çıkış alınır.Hatanın türüne bağlı olarak, bir sayfa için çok sayfalı, sanal ayrılmış veya kaydedilmiş sayılar için ayrı ayrı bellek clerks bakmanız gerekir.En büyük bellek tüketicilere tanıtan olan bir anahtar hata araştırmaya devam etmeden adım.Tipik olarak, en büyük bellek tüketiciler aşağıdaki türleri şunlardır:

  • memoryclerk_ * sunucu yapılandırma veya iş yükünü belirli bellek ayırmalarını gerektirir.sql Server bileşenleri için bellek clerks olan ilgili ve tek tek bileşenleri çeşitli bellek clerks olabilir.Daha fazla bilgi için bkz: sys.dm_os_memory_clerks (Transact-sql).Bazen bellek clerks soruna neden olan iş yükünü tanımlayabilirsiniz, ancak büyük miktarda bellek tüketim ne neden bulmak için clerks ilişkili bellek nesneleri incelemek gerekir daha olasıdır.

  • cachestore_ *, userstore_ * objectstore_ * önbellekleri tür olduğunu.Bir önbellek yüksek bellek tüketimini anlamı:

    • Bellek yetersiz önbellek tahsis edilir ancak henüz edilemeyeceği bir giriş eklenir.Bu memoryclerk için çok benzer durum yukarıda.

    • Bunlar çıkarılamadığı için tüm önbellek girdilerini kullanılıyor.Bu bakarak onaylanabilmesi sys.dm_os_memory_cache_counters ve değerleri karşılaştırma entries_count sütun ve entries_in_use_count sütun.

  • MEMORYCLERK_SQLQERESERVATIONS ne kadar bellek sorgu yürütme (sıralar/birleşim sorguları çalıştırmak için kalite Mühendisliği) tarafından ayrılmış gösterir.Bir rezervasyon genellikle yüksek olduğunda oluşan bellek yetersiz hatası sunucu bir hata gösterir.

Bellek durumu çıkışında hata günlüğü hangi bellek havuzu bitti de gösterilir.Bellek önbelleğe arasında çalınan (derleme), bellek dağıtım aracıları her havuz için Göster ve (verilen) ayrılmış bellek.Sayıları üç aracıları için bellek clerks ile ilgili önceki bellek nesneler karşılık gelir.Ne kadar bellek havuzu için verilen bir memuru veya bellek nesneden özel bir komut dosyası kullanarak tam bir dökümü bilgileri ayıklayarak tahsis edilen bulabilirsiniz ve sys.dm_os_memory_cache_entries dinamik yönetim görünümü, hangi programları pool_id her giriş ile ilişkili.

Müşteri Destek Hizmetleri'ne başvurun gerekiyorsa, bizim destek personeli için aşağıdaki bilgileri toplar:

  • Yetersiz bellek hatası ve bellek durumu çıkışına gösteren hata günlüğü saat hata.

  • Aşağıdaki deyimleri çıktısı:

    dbcc memorystatus
    dbcc sqlperf(spinlockstats)
    select * from sys.dm_os_memory_clerks
    select * from sys.dm_os_wait_stats order by wait_type
    select * from sys.dm_os_waiting_tasks
    select * from sys.dm_os_ring_buffers where ring_buffer_type='RING_BUFFER_OOM'
    select * from sys.dm_os_ring_buffers where ring_buffer_type='RING_BUFFER_RESOURCE_MONITOR'
    select * from sys.dm_os_ring_buffers where ring_buffer_type='RING_BUFFER_MEMORY_BROKER'
    select * from sys.dm_os_memory_cache_clock_hands
    
  • İsteğe bağlı olarak, bellek yetersiz döküm T8004 ile toplanır.Bu Mini döküm halka arabelleği ve sayaç kilidi/bekleme istatistikleri gibi değerli bilgiler vardır.T8004 için döküm sayaç T8004 kapatıp açarak sunucuyu yeniden başlatmanıza gerek kalmadan sıfırlayabilirsiniz.

Hassasiyetli sorgu planı

Bu senaryoda, bir sorgu bir hassasiyetli sorgu planı nedeniyle yavaş çalıştığını kuşkulanıyorsanız.Bunu yeterli bellek yetersiz bellek sınırı ayarlamak için bir kaynak havuzu nedeniyle almazsa sorgu iyileştiricisi hassasiyetli sorgu planı oluşturabilir.

Aşağıdaki eylemleri en iyi kaynak havuzu ayarlarını belirlemek yardımcı olacaktır:

  • Verilerin alınacağı veri sorgu en iyi duruma getirmeleri/sn görmek için sayaç olup olmadığını iş yükü grubu çok sayıda sorgu derlerken vardır.

  • Verilerin alınacağı veri hassasiyetli planları/sn görmek için sayaç sorgu iyileştiricisi sık sık hassasiyetli planlar üretir.

Yukarıdaki koşullardan biri varsa, kaynak havuzu bellek sınırını artırmayı düşünün.