Aracılığıyla paylaş


Kaynak Governor sorun giderme

Bu konu, kaynak Governor kullanırken ortaya çıkabilecek koşulları için sorun giderme kılavuzu sağlar.Bu kılavuz aşağıdaki kategorilerde düzenlenmiştir:

  • Hataları

  • Beklenmeyen sonuçlar

  • Performansla ilgili sorunlar ve hatalar

Kaynak Governor hataları

Kaynak Governor hata iletileri ile ilgili yapılandırma ve kullanma tüm eylemleri kapsar kaynak Governor.

Aşağıdaki tablo, kaynak Governor hata iletileri örnekleri sağlar ve hata iletisinde tanımlanan sorunu gidermek yönergeler sağlar.

Hata Numarası:

Hata iletisi

Çözüm

8645

Kaynak havuzunda 'myTestPool' (257) sorguyu çalıştırmak için bellek kaynakları beklenirken zaman aşımı oluştu.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 verme 'myTestPool' (257) kaynak havuzunda kullanılabilir olmadığı için işlem gerçekleştirilemedi.Sorguyu yeniden çalıştırın, sorgu yükü azaltmak ve kaynak Governor yapılandırma ayarlarını denetleyin.

Sorguyu daha sonra yeniden çalıştırın.Sunucuya sorgu yükünü azaltın.Kaynak Governor yapılandırma ayarını denetlemek için yönetici alın.

8657

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

Sıralama ve karma birleştirmek gibi işlemleri kullanan bellek azaltmak için sorguyu yeniden yazın.Yüksek bellek kullanımı sınırı izin vermek için sistem yöneticinize başvurun.

Bir yönetici, birini veya her ikisini şu parametreleri ayarlayabilirsiniz:

  • max_memory_percent en fazla fiziksel bellek ayarlar kaynak havuzları, temel alan tüm sorgular. verin

  • request_max_memory_grant_percent ayarlar iş yükünü gruplarında başına - sorgu - sınırı.

Yönetici gerçek fiziksel sınırının alabilirsinizmax_target_memory_kb sütundan sys.dm_exec_query_resource_semaphores.

Her-sorgu-sınırı tarafından hesaplanırmax_target_memory_kb * request_max_memory_grant_percent .

NoteNote:
Hata iletisinde belirtilen gerekli bellek başına-sorgu-sınırı üzerinde hesaplanan daha küçük olduğundan emin olmak yöneticinin gerekir.Ancak, belirtildiği, artanrequest_max_memory_grant_percent eşzamanlılık büyük sorgular. azaltarak, bir yan etkisi vardır. Örneğin, kullanıcıların bir 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 bekleyebilir.

10900

Başlangıç sırasında kaynak Governor yapılandırılamadı.Özel hata iletileri için SQL Server hata günlüğüne bakın veya DBCC CHECKCATALOG('master') çalıştırarak ana veritabanının tutarlılığını denetleyin.

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

10901

Kullanıcı, kaynak Governor değiştirme izniniz yok yapılandırma.

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

10902

Kullanıcı tanımlı işlev 'dbo.rgclassifier_v1' asıl veritabanı yok ya da kullanıcının erişim iznine sahip değildir.

Bir Sınıflandırıcısı kullanıcı tanımlı işlev (UDF) oluşturmaana veya varolan Sınıflandırıcısı UDF. üzerinde gerekli izinleri

10903

Kullanıcı tanımlı işlevin Sınıflandırıcısı belirtilen şema adı 'dbo' yok veya kullanıcı bunu kullanma izniniz yok.

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

10904

Kaynak Governor yapılandırması başarısız oldu.Bırakılan veya farklı bir kaynak havuzu için taşınabilir iş gruplarını etkin oturum yok.Tüm etkin oturumlar etkilenen iş yükünü gruplar halinde kesin ve yeniden deneyin.

Tüm etkin oturumlar etkilenen gruplarını, kesin ve yeniden deneyin.

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

10905

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

Sunucu üzerindeki yükü azaltmak ya da bir özel Bağlantı Yöneticisi yapılandırma işlemi deneyin.

10906

Nesne 'dbo'. 'rgclassifier_v1' geçerli bir kaynak Governor Sınıflandırıcısı kullanıcı tanımlı işlev değil.Kullanıcı tanımlı işlev geçerli Sınıflandırıcısı gerekir şemaya bağlı olarak, sysname dönün ve 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öndürür.

  • Parametre vardır.

  • SCHEMABINDING seçeneği ile oluşturulması.

10907

Öznitelik değeri 50 'MIN_CPU_PERCENT' özniteliği 'MAX_CPU_PERCENT' değeri 40 olan büyüktür.

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

10908

Değeri olan 40 'MAX_MEMORY_PERCENT' özniteliği değeri olarak 60 'MIN_MEMORY_PERCENT' özniteliğiyle azdır.

Sağlayan en büyük değer olan büyük veya buna eşit en az bir öznitelik değeri.

10909

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

Gerekli kaynak havuzları bırakın.

10910

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

MIN_CPU_PERCENT için değeri azaltın.

10911

Kaynak havuzu 'myTestPool2' olmadığından istenen işlem gerçekleştirilemiyor.

Sys.resource_governor_resource_pools Katalog görünümü'ne kaynak havuzları şu anda tanımlanmış görmek için sorgu.Varolan havuzunu seçin veya yeni bir havuz oluşturur.

10912

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

Bırakmak için bir kullanıcı tarafından oluşturulan iş yükü grubu seçin.

10913

Kullanıcılar, 'iç' kaynak havuzu 'iç' iş yükü grubu silmek için izin verilmez.

Bir kullanıcı tarafından oluşturulan havuz veya varsayılan havuzu iş yükü grubu oluşturun.

10914

'#Mygroup' iş yükü grubu adını # ile başlayamaz ##.

# Veya bir Grup ya da havuz oluşturma ## when kullanmayın.

10915

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

Bir kullanıcı tarafından oluşturulan havuz veya değiştirmek için grubu seçin.

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

10916

Kaynak havuzu 'myTestPool', içerdiğinden bırakamazsınız iş yükü grubu 'myTestGroup'.Bırakın veya silmeden önce bu kaynak havuzu kullanarak tüm iş grupları kaldırın.

Bırakın ya da dışında bu havuzu kullanan tüm iş gruplarını taşıyın ve sonra havuzu bırakın.

10917

ALTER iş yükü grubu başarısız oldu.'İle' veya 'Kullanarak' yan tümcesinde belirtilmelidir.

'İle' veya 'Kullanarak' yan tümce ALTER kullanmak iş yükü grubu deyim.

10918

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

Farklı kaynak havuzu adı seçin.

10919

asıl veritabanı kaynak Governor yapılandırma okunurken bir hata oluştu.asıl veritabanı bütünlüğünü denetleyin veya sistem yöneticinize başvurun.

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

10920

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

Yok..

10921

'Default' iş yükü grubu 'default' kaynak havuzu taşınamaz.

Uygulanamaz.

10981

Kaynak Governor yeniden yapılandırma başarılı oldu.

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

10982

Kaynak Governor Sınıflandırıcısı kullanıcı tanımlı işlev çalıştırılamadı.SQL Server önceki hataları Bkz: hata günlüğü oturum ID 58 ayrıntılar.Sınıflandırıcısı saat: 800 ms.

Bu ileti için SQL Server yazılır hata günlüğü.

NotÖnceki iletileri ile aynı sunucu işlemi tanımlayıcısı (SPID) SQL Server hata günlüğüne sağlayabilir belirli hata nedeni.Uzun süren Sınıflandırıcısı kullanıcı oturum açma zaman aşımı neden olabilir.Sınıflandırıcısı saat istemci oturum açma saat aşımı aşıyor, bakın.

10983

Kaynak Governor yeniden yapılandırılması, kullanıcı tarafından iptal edildi.

Uygulanamaz.

10984

Kaynak Governor yapılandırması başarısız oldu.

Uygulanamaz.

Beklenmeyen getiriler

Burada çeşitli öğeler, kaynak Governor çalışmaktadır, ancak sonuçlar beklediğiniz olmayan durumlarda beklenmedik sonuçlar açıklanmaktadır.Örneğin, oturum sınıflandırma düzgün görünmüyor veya bırakarak veya iş grupları oluşturma ile ilgili sorunlar vardır.

Oturum sınıflandırma

Oturumları varsayılan gitmek iş yükü grubu, aşağıdaki koşulların var:

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

  • UDF Sınıflandırıcısı koymak bunları, gösteren bir kusur işlev mantığı.

Temel sorun giderme

Yoksa UDF sınıflandırma sonra tüm oturumlar için kullanılabilir hiçbir Sınıflandırıcısı otomatik olarak varsayılan iş grubuna gider.Bir UDF Sınıflandırıcısı oluşturduktan sonra kaynak Governor ile kayıtlı olduğunu emin olmanız gerekir,-bellek yapılandırma güncelleştirilir.

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

  • İlk olarak, işlev oluşturmanız gerekir.

    CREATE FUNCTION function_name() RETURNS <something> 
    WITH SCHEMABINDING
    
  • İkinci olarak, işlev kaynak Governor ile kaydetmeniz gerekir.

    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=schema_name.function_name)
    
  • Bellekteki kaynak Governor güncelleştirmek gereken üçüncü yapılandırma.

    ALTER RESOURCE GOVERNOR RECONFIGURE
    

Oluşturduğunuz işlevi ile kaynak Governor kaydedildiğini doğrulamak sınıflandırma giderirken yapmalısınız ilk şey ise, yapılandırma güncelleştirildi.Şema adı (schema_name) ve kaynak Governor şu anda kullandığı UDF Sınıflandırıcısı Sınıflandırıcısı işlev adı (işlev_adı) elde etmek için aşağıdaki sorguyu kullanın.

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ştirilmiş ancak kaynak Governor hala önceki işlev mantığı oturumları sınıflandırmak için kullandığı bir senaryo gidermek için yukarıdaki yaklaşım kullanabilirsiniz.Bu davranış, yaptığınız değişiklikler bellek içi yapılandırmaya uygulanmadı gösterir.

GELİŞMİŞ SORUN GİDERME

Beklenen sonuçlar oluşturmak veya kaynak yoğundur çok karmaşık Sınıflandırıcısı işlev oluşturabilirsiniz.Temel sorun giderme işlemi daha sonra işlev mantığı ses olduğunu doğrulamanız gerekir.En kötü senaryo bir kodlama kusur sonsuz bir döngüye veya ard arda sorgu sonuçlar biridir.

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

Not

Bir DAC sorun gidermek için kullanılabilir durumda değilse, tek kullanıcı modunda sistemi yeniden başlatabilirsiniz.Tek kullanıcı moduna sınıflandırmaya tabi olmamasına rağmen çalışırken kaynak Governor sınıflandırma tanılama yapamaz.

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

  • sys.dm_exec_query_stats.(deyim bilgi ancak gerçek işlevini içerir)

  • sys.dm_exec_sql_text (ile birlikte kullanmak sql_handle sys.dm_exec_query_stats ' alınan)

  • PreConnect: Başlangıç olay Class (kodu ve adı Sınıflandırıcısı işlev sağlar)

Hataları yeniden

meta veriler değişiklikleri kaynak Governor kaynak GOVERNOR yeniden ALTER deyim tamamlanıncaya kadar oturum çalışmasını ayrı tutar.Etkin veya açık oturumu içeren bir grubu silmek çalışırsanız, ALTER kaynak GOVERNOR yeniden başarısız olur veya kaynak havuzu bırakma çalışırsanız, iş gruplarını içerir.

Bellek içi ve saklı elde etmek için yapılandırma, sys.dm_resource_governor_yapılandırma ve sys.resource_governor_yapılandırma sırayla sorgular.1 Değeriis_reconfiguration_pending (sys.dm_resource_governor_configuration) gösteren oturum yapılandırma güncelleştirilmemiş.Bu durumda, seçenekleri aşağıdaki gibidir:

  • Oturumları bitirmek, bağlantıyı kesmek için bekleyin.

  • Açıkça, etkin durumdaki oturumunu durdurmak veya doğrudan oturum bağlantısı.

  • Grup ya da, bırakılan havuzu oluşturmanız, kendi ayarlarını ve ALTER kaynak GOVERNOR yeniden yeniden çalıştırın.

Performansla ilgili sorunlar ve hatalar

Orada varsa, kaynak Governor kullandığınızda performans sorunları için kaynak Governor yapılandırma ile soruna neden olup olmadığını belirlemek için gerekir.Bu bölümde verilen sorun giderme kılavuzu iki kategoride gruplandırılmıştır:

  • Oturum sınıflandırma

  • Sorgu yürütme

Oturum sınıflandırma

Uzun süren 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ışan oturum olduğundan şüpheleniyorsanız, adanmış yönetici bağlantısı kullanarak oturum açın ve iadePreConnect: Başlangıç olay sınıfıbirden çok istek veya başlatıldı, ancak tamamlanmamış oturumları olup olmadığını görmek için.

Bu sorunu gidermek ve yeniden olmuyor engellemek için:

  • Oturumları Durdur

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

  • Çıkarıp tetikleyiciyi veya soruna neden olan bir işlev

Sorgu yürütme

Sınıflandırılmış ve yürütülen bir sorgunun olduktan sonra başarısız ya da yanıt vermeyi kesebilir (askıda) görünebilir.Siz kuşkulanıyorsanız, geçerli kaynak Governor ayarları neden olabilir.Kaynak Governor yapılandırmanız aşağıdaki yönlerini incelemek gerekenler:

  • İstek sayısını azaltma

  • CPU sınırı

  • CPU bant genişliğini azaltma

  • Bellek verme boyutu

  • Bellek verme zaman aşımı hatası

  • Yetersiz bellek hatası

  • Suboptimal sorgu planı

Azaltma isteği sayısı

Bu senaryoda, istek sayısını daraltma düşünüyorsanız 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ılıp yapılandırılmadığını doğrulayın olur.Bunu GROUP_MAX_REQUESTS ayarı etkin olup olmadığını görmek için kullanıcının grup üyeliğini denetleyerek yapabilirsiniz.GROUP_MAX_REQUESTS etkin olduğu hiçbir açık istek sayısı azaltma.Araştırma ek olarak, aşağıdaki adımları.

  • İstekler RESMGR_THROTTLED bekleme türüne bekleyen görmek için sys.dm_os_waiting_tasks sorgular.Bu bekleme türü isteği sayısını azaltmayı olduğunu.

  • Performans İzleyicisi'ni başlatın ve toplama verileri kullanarakSıraya alınan istek ve Active istekleri sayacı.Sıfır olmayanSıraya alınan istek sayısını gösterir istek azaltma.

  • Denetleyin,Etkin istek GROUP_MAX_REQUESTS ayarı. değerle eşleşen ,Etkin istek değer GROUP_MAX_REQUESTS ayarından daha yüksek ise, Grup (örneğin, açık hareketler) bastırma istekleri olabilir.

  • IfSıraya alınan istek sıfırdır, Active istek havuzu aşırı çünkü çok fazla istek. ile aynı kaynak havuzunu paylaşan tüm iş gruplarının denetleyin

En çok CPU sınırı

Kaynak Governor olay oluşturma tarafından yönetilen bir ilke 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ılama 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, doğrulama ayarı CPU sınırını yardımcı olur.

  • SQL izleme oturum başlatın ve toplamaCPU eşiği aşıldı olay.Kullanıcı isteği en yüksek CPU kullanım sınırına ulaştığında, sunucu otomatik olarak bir SQL izleme olayı oluşturur.Ayarlarınızı çok düşükse, bu olaylar çok yüksek sayıda oluşturulur.

Not

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

  • Performans İzleyicisi'ni başlatın ve toplama verileri kullanarakEn çok istek cpu saat (ms) sayaç. Uygun sınırı ayarlamak için bu sayacın değeri bir kılavuz olarak kullanabileceğiniz iş yükü grubu.

CPU bant genişliğini azaltma

CPU bant genişliği nedeniyle bastırma düşünüyorsanız bu senaryoda,% CPU kullanımı olduğu ya yakın kaynak Governor MAX_CPU_PERCENT ayarı. performans sayacı Tüm iş grupları için CPU kullanımı % değeri ve bir SQL Server kopyası için kaynak havuzları aşağıdaki sorgu verir.

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 denetimlerin 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, bu, sorun giderme sorguyu etkiler.

  • CPU kullanımı kaynak havuzları arasında dağıtımını kontrol edin.Yüksek CPU kullanımı için yapılandırılmış en az değeri başka bir havuza sahip olduğu kaynak havuzu bastırma.Sayaçlar için beklenen (hesaplanmış CPU kullanımı) gerçek CPU kullanımına göre karşılaştırın.

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

  • CPU kullanımı'nün üzerinde schedulers denetleyin.Uzun süre çalışan sorguları içeren bir zamanlayıcı yer, araştırma sorgu.Bu durumda, sorguyu bastırma görünebilir ancak eşit olmayan yük schedulers arasındaki dağılımı gerçek sorundur.

  • Burada iş yükünü kaynak Governor ayarlarından bastırma yerine diğer oturumları engellendi olası durumda olup olmadığını denetleyin.

  • Şu anda sistemde çalışan sorgu oturumları sayısını denetleyin.Eş zamanlı yürütülen istek sayısı arttıkça, SQL Server tümünün en azından bazı CPU starvation önlemek için CPU zamanı miktarı görüntüleniyor sağlamak çalışır.

Bellek ver boyutu

Bu senaryoda, verme bellek boyutu sorgu yavaş çalışmasına neden olduğundan şüpheleniyorsanız.

Kaynak Governor verme bellek sınırı içinde büyük sorgular sığacak biçimde azaltarak maksimum sorgu bellek sınırı zorlar.Bellek verme % 100'den küçük bir sorgu alır, geçici veri spill ve dikkat çekici bir performans etkisi olan bir diske yazmak için gerekli olabilir.

Uygun maksimum sorgu boyut sınırını ayarlamak için büyük sorgular yüzdesini belirlemek gerekir.Aşağıdaki eylemleri, en iyi ayarları yardımcı olacaktır:

  • Bellek verir geçerli durumu görmek için sys.dm_exec_query_memory_grants sorgular.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.Ifrequested_memory_kbideal_memory_kbönemli ölçüde daha düşük, daha sonra sorguyu sık sık (ve önem düzeyi tahmini doğru olduğunu varsayarak) spilling end.

  • Performans İzleyicisi'ni başlatın ve toplama verileri kullanarakAzalan bellek verir/sn sayaç. Bu sayacın değeri ideal tutardan daha az istek en büyük boyut sınırını vurarak sonra alınan bellek verme sayısı oranını gösterir.Sorgular büyük bellek sınırları içinde kalmak için diske spill gerektiğinden ideal bir tutar ile daha çok daha yavaş çalışabilir.

Zahmetinden bellek vermek sorunu havuz boyutu sınırı veya en büyük bellek boyutu sınırını artırmak olabilir.

Not

Yalnızca en büyük bellek boyutunu artırırsanız, bu büyük sorgularının daha az tutarlılık için neden olabilir.

Bellek verme zaman aşımı hatası

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

Etkin belleğin toplam sayısı, istekleri ve iş yükünü grubunda belirtilen bellek sınırlarını vermek hem de kaynak havuzunu tanımlar bellek verme zaman aşımı bir rol oynar.Tek bir kaynak havuzu birden çok kaynak grupları tarafından paylaşılıyorsa, diğer gruplara eşzamanlı sorgu sayısı bellek verme zaman aşımı da etkileyebilir.

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

  • Sorgu sys.dm_exec_query_memory_grants bellek verir sayısını görmek ve bekleyen bu grup ve sorgulamaları havuzu.

  • Toplam bellek ve hedefleri verilen görmek için sys.dm_exec_query_resource_semaphores sorgular.

GRANT bellek kullanımı bellek alanı büyükse, kaynak havuzu boyutu sınırını artırmayı düşünebilirsiniz.

Yetersiz bellek hataları

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

Temel sorun giderme

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

  • Göreli bellek dağıtım ve kaynak havuzu içinde eğilim sys.dm_os_memory_brokers sorgular.Çok küçük bir bellek alanında çok fazla istek yüklenmiş bir yol açabilecek iş yükü grubu / kaynak havuzunu ve nedeni yetersiz bellek hatası.

  • Performans İzleyicisi'ni başlatın ve bellek verir, önbellek 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ğerleri büyük, kaynak havuzu aşırı yüklenmiş demektir.Havuzu bellek sınırlarını değiştirmeyi düşünün.

  • Performans İzleyicisi'ni başlatın ve toplama verileri kullanarakİstek en büyük bellek vermek sayaç. Sorgu, sayaç değeri iş yükü grubu REQUEST_MAX_MEMORY_GRANT_PERCENT ayarı tarafından belirlenen değeri aşarsa, büyük olasılıkla başarısız olur.İş grubu sınırını değiştirmeniz iyi olur.

GELİŞMİŞ SORUN GİDERME

Bellek (701) hatası işyeri görevleri bellek yöneticisi bellek ayırma girişimi ve deneme başarısız olduğunda döndürülen genel bir hatadır.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 Governor bu durum tek nedeni olabilir.Bu duruma katkıda bulunan bellek talepleri olan sunucu üzerinde çalışan diğer uygulamalar olabilir.

  • Sanal adres alanı için gerekli rezervasyon yeterince büyük boş blok olmadığı için birden çok sayfa veya sanal adres alanı ayırma başarısız olur.Bir 32-bit mimarisi ve bir 64-bit mimarisine gerçekleşmesi olası en yüksek olmasıdır.

  • yürütme sınırı toplam taahhüt ulaştığında birden çok sayfa veya sanal adres alanı ayırma başarısız olur.Bu, hem 32-bit ve 64-bit mimarileri için geçerlidir.

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

başarısız ayırma sayfaları 2006-01-28 04:27:15.43 spid51: 1 FAIL_PAGE_ALLOCATION

Olası hataları, kaydedilen hata günlüğü şunlardır:

  • FAIL_PAGE_ALLOCATION, ayırmaya çalıştığınız sayfa sayısı izler

  • İzleyen bayt ayırma denemesi sayısına FAIL_VIRTUAL_RESERVE,

  • Kaydetmeye çalıştığınız bayt sayısına ve ardından FAIL_VIRTUAL_COMMIT,

Bellek hatası işyeri tetikleyen görev hataya neden olan bir görev olduğunu genellikle bilmek önemlidir.Kaçan bir görevi yoksa, bellek durumu yetersiz genellikle birden fazla çalışan görev culmination'dir.Sonuç olarak, bir FAIL_PAGE_ALLOCATION hata yaygın durum kullanarak, araştırma sistem etkinliğini daha kapsamlı bir görünümünü uygulamanız gerekir.

hata günlüğü bilgi sonraki değerli taş bellek durumu çıkış alınır.Hatanın türüne bağlı olarak, tek sayfa için birden çok sayfa, sanal ayrılmış veya kaydedilmiş sayılar için ayrı ayrı bellek clerks bakmanız gerekir.En büyük bellek Tüketiciler tanımlayan hata araştırmaya devam, önemli bir adımdır.Genellikle, en büyük bellek Tüketiciler aşağıdaki türleri şunlardır:

  • MEMORYCLERK_ * iş yükünü ve sunucu yapılandırmasını özel bellek ayırma gerektiren anlamına gelir.Var olan ilgili SQL Server bileşenleri için bellek clerks ve bileşenleri çeşitli bellek clerks olabilir.Daha fazla bilgi için bkz:sys.dm_os_memory_clerks (Transact-SQL).Bazen soruna bellek clerks yükünü tanımlayabilirsiniz, ancak bu bellek tüketimi büyük miktarda neden dışında ne bulmak için clerks ilişkili bellek nesneleri incelemek gerekir daha yüksektir.

  • CACHESTORE_ *, USERSTORE_ * OBJECTSTORE_ * önbellekleri türleri şunlardır.Bir önbellek tarafından yüksek bellek kullanımı, gelebilir:

    • Bellek önbellekte tahsis edilir, ancak henüz çıkarılacak bir giriş eklenir.Bu yukarıdaki MEMORYCLERK servis çok benzer.

    • Çıkarılacak olamaz, böylece tüm önbellek girdilerini kullanılıyor.Bu arama sırasında sys.dm_os_memory_cache_counters ve entries_count sütun ve entries_in_use_count sütun değerleri karşılaştırarak teyit.

  • Ne kadar bellek sorgu yürütme sıralar/Birleşim sorguları çalıştırmak için (QE) tarafından ayrılmış MEMORYCLERK_SQLQERESERVATIONS gösterir.Rezervasyonları genellikle yüksek olduğunda oluşan hata bellek yetersiz, sunucu bir hata gösterir.

Bellek durumu çıktı hata günlüğünde hangi bellek havuzu bitti de gösterilir.Her havuz için bulunur arasında çalınan (derleme), bellek dağıtım Göster önbelleğe alınan ve (verilen) ayrılmış belleği bellek.Üç bulunur sayıları bellek clerks ile ilgili önceki bellek nesnelere karşılık gelmektedir.Ne kadar bellek havuzu için bir verilen clerk veya bellek nesnesi özel bir komut dosyası ve pool_id her giriş ile ilişkili olduğunu gösteren sys.dm_os_memory_cache_entries Dinamik yönetim görünümü kullanarak tam döküm alınan bilgileri ayıklamak tahsis edilen bulabilirsiniz.

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

  • Bellek hatası ve hata anında çıktı bellek durumunu çıkış gösteren hata günlüğü.

  • Aþaðýdaki ifadeleri çı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, bir bellek döküm işyeri ile T8004 toplandı.Bu mini döküm halka arabelleği ve sayaç kilidi/wait istatistikleri gibi önemli bilgileri gerekir.Döküm sayaç T8004 için T8004 kapatıp açarak sunucuyu yeniden başlatmanıza gerek kalmadan sıfırlayabilirsiniz.

Suboptimal sorgu planı

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

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

  • Veri almaSorgu en iyi duruma getirme/sn sayaç iş yükü grubu sorgu derlenir. yüksek bir sayı olup olmadığını görmek için

  • Veri almaSuboptimal planları/sn görmek sorgu iyileştirici sık üreten, suboptimal planları. sayaç

Yukarıdaki koşullardan biri varsa, kaynak havuzu bellek sınırını çıkartabilirsiniz.