Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Details
| Attribute | Değer |
|---|---|
| Ürün Adı | SQL Server |
| Olay Kimliği | 17890 |
| Olay Kaynağı | MSSQLSERVER |
| Bileşen | SQLEngine |
| Sembolik Ad | SRV_WS_TRIMMED |
| İleti Metni | SQL Server işlem belleğinin önemli bir bölümü disk belleğe alınmıştır. Bu, performans düşüşüyle sonuçlanabilir. Süre: %d saniye. Çalışma seti (KB): %I64d, ayrılmış bellek (KB): %I64d, bellek kullanımı: %d%%. |
Explanation
SQL Server hata günlüğünde veya Windows Uygulama olay kaydında aşağıdaki hata mesajıyla karşılaşabilirsiniz.
SQL Server işlem belleğinin önemli bir bölümü disk belleğe alınmıştır. Bu, performans düşüşüyle sonuçlanabilir. Süre: 0 saniye. Çalışma kümesi (KB): 3383250, taahhüdü (KB): 9112480, bellek kullanımı: 37%.
SQL Server'daki sorgu yürütme ve diğer tüm işlemlerde aniden performans düşüşü de fark edebilirsiniz.
Cause
SQL Server, SQL Server süreciyle ilgili çeşitli bellek bilgilerini izler. Bu durumda, sürecin çalışma kümesinin taahhütlü süreç belleğinin 50%'inden az olduğu tespit edilmiştir. Sonuç olarak bu uyarı basılır. Bu uyarının normal nedenleri şunlardır:
- İşletim sistemi, SQL Server'ın ayrılmış belleğinin büyük bir kısmını sayfa dosyasına gönderir.
- Bu, diğer uygulamalardan veya işletim sistemi ihtiyaçlarından ani şekilde bellek talebinin artmasından kaynaklanabilir.
- Bu, bazı cihaz sürücülerinin ihtiyaçları için bitişik bellek tahsisleri talep ettiğinde de olabilir.
Kullanıcı eylemi
Windows işletim sisteminin SQL Server sürecinin tampon havuzu belleğini sayfaya çıkarmasını engelleyebilirsiniz; bufer havuzu için ayrılan belleği fiziksel belleğe kilitleyebilirsiniz. Belleği kilitlersiniz; Lock sayfalarını bellek kullanıcı sağında, SQL Server hizmetinin başlangıç hesabı olarak kullanılan kullanıcı hesabına atamak. Ancak bu çözümü uygulamadan önce, SQL Server belleğinin sayfa olarak ayrılmasına neden olan ve "Sayfaları bellekte kilitle" kullanıcı hakkını atamadan önce Önemli Hususlar bölümlerini inceleyin (SQL Server örneği için
Note
Bellekte Sayfaları Kilitlemek, SQL Server tarafından yönetilen belleğin dışarı sayfalanmamasını sağlar. Ancak, iş parçacığı yığınları, EXE ve DLL görüntüleri, heap bellek, CLR bellek işletim sistemi tarafından sayfalanabilir.
SQL Server 2008 SP1 Cumulative Update 2 ile itibaren, hem SQL Server Standard hem de Enterprise sürümleri kullanıcı hakı için Lock sayfalarını hafızada kullanabilir. Kilitli sayfalar desteği hakkında daha fazla bilgi için KB970070 - SQL Server Standard Edition (64-bit) sistemlerde Kilitli Sayfalar Desteği bölümünü inceleyin.
Lock sayfalarını hafıza kullanıcı hakkında atamak için şu adımları izleyin:
- Start'a tıklayın, Çalıştır'a tıklayın, gpedit.msc yazın ve sonra OK'ye tıklayın.
- Not: Grup Politikası iletişim kutusu görünür.
- Bilgisayar Yapılandırması'nı genişletin, ardından Windows Ayarları'nı genişletin.
- Güvenlik Ayarları'nı genişletin, ardından Yerel Politikalar'ı genişletin.
- Kullanıcı Hakları Ataması'na tıklayın ve ardından hafızadaki sayfaları kilitlemeye çift tıklayın.
- Yerel Güvenlik Politikası Ayarları diyalog kutusunda, Kullanıcı veya Grup ekle seçeneğine tıklayın.
- Kullanıcılar veya Gruplar Seç iletişim kutusunda, Sqlservr.exe dosyasını çalıştırma iznine sahip hesabı ekleyin ve ardından Tamam'a tıklayın.
- Grup Politikası iletişim kutusunu kapatın.
- SQL Server hizmetini yeniden başlatın.
Belleğe Lock sayfalarını atadıktan ve SQL Server servisini yeniden başlattıktan sonra, Windows işletim sistemi artık SQL Server sürecinde buffer havuzu belleğini sayfalamıyor. Ancak, Windows işletim sistemi yine de SQL Server sürecinde tampon havuzu olmayan belleği sayfalayabilir.
SQL Server örneği tarafından kullanıcı hakkının kullanıldığını doğrulamak için şu mesajın SQL Server Hata Günlüğü'nde başlangıçta yazıldığından emin olabilirsiniz: "Buffer havuzu için kilitli sayfalar kullanılıyor"
Bu mesaj yalnızca SQL Server için geçerlidir. ERRORLOG'daki bu mesaj hakkında daha fazla bilgi için aşağıdaki adresi ziyaret edin: Yerel Sistem'de Bellek ayrıcalığı için Lock sayfalarını atamam mı gerekiyor?
Windows işletim sistemi tampon havuzu olmayan belleği sayfaladığında, yine de performans sorunları yaşayabilirsiniz. Ancak, "Açıklama" bölümünde bahsedilen hata mesajları SQL Server hata kaydına girilmemiştir.
SQL Server belleğinin sayfa dışı atılmasına neden olur
Bu soruna neden olabilecek üç geniş sorun kategorisi vardır:
- Application-Related Sorunlar: Tüm uygulamalar birlikte mevcut fiziksel belleği tükenmiş olup, işletim sistemi yeni uygulama kaynak talepleri için biraz bellek boşaltmak zorundadır. Genellikle buradaki yaklaşım, hangi uygulamaların belleği tükettiğini bulmak ve RAM tükenmesine yol açmadan bunları aralarında dengelemek için gerekli adımları atmaktır.
- Cihaz Sürücüsü Sorunları: Sürücü bir bellek tahsisi fonksiyonunu yanlış çağırırsa, Cihaz Sürücüleri tüm süreçlerin çalışma seti sayfalanmasına neden olabilir.
- Operasyon Sistemi Sorunları
Aşağıda, bu kategorilerin her biri hakkında bilgi bulabilirsiniz
Application-Related sorunları: Uygulamalar birlikte sistemdeki tüm RAM'i tüketebilir. Yeni bellek talepleri yapılırsa, işletim sistemi bunları karşılamaya çalışır ve boş bellek yoksa, çalışan uygulama setini bellek isteklerini karşılamak için kıstırır. Bu durumlarda, çoğu hatta tüm uygulamalarda çalışma setinin önemli ölçüde düştüğünü görebilirsiniz. Bunu gözlemlemek için, sistemdeki tüm uygulamalar için aşağıdaki Performans İzleyicisi sayacı toplayın:
- Performans nesnesi: Süreç
- Counter: Çalışma Seti
Ayrıca, sistemde ne kadar fiziksel bellek olduğunu ilişkilendirmek için aşağıdaki sayacı izleyin.
- Performans nesnesi: Bellek
- Sayaç: Kullanılabilir Bellek (MB)
Gözlemlediğiniz tipik davranış, mevcut belleğin 0 MB'a yaklaşması ve aynı zamanda sistemdeki çoğu (tüm) süreç için Çalışma Seti sayacı aniden düşmesidir. Böyle bir davranış gözlemlerseniz, sistemde bellek kullanımını azaltmak için adımlar atmanız gerekebilir; örneğin SQL Server için Max Server Belleği'nin azaltılması da dahildir.
Uygulamalar ayrıca sistem önbelleğini çok fazla kullanabilir ve sistem önbelleğinde büyük bir büyümeye neden olabilir. Sistem önbelleğinin büyümesine yanıt vermek için sistem, SQL Server sürecinin veya diğer uygulamaların çalışma setini sayfalara ayırır. Bu sorunu yaşarsanız, uygulamada bazı bellek yönetim fonksiyonlarını kullanabilirsiniz. Bu fonksiyonlar, dosya I/O işlemlerinin uygulamada kullanabileceği sistem önbellek alanını kontrol eder. Örneğin, dosya I/O işlemlerinin kullanabileceği sistem önbellek alanını kontrol etmek için SetSystemFileCacheSize fonksiyonunu ve GetSystemFileCacheSize fonksiyonunu kullanabilirsin.
Bellek performans nesnesini kullanarak bu nesnedeki çeşitli sayacların değerlerini görebilir ve sistem önbellek çalışma kümesinin çok fazla bellek kullanıp kullanmadığını belirleyebilirsiniz. Örneğin, Cache Baytları ve Sistem Önbellek Yerleşik Baytlar sayacı görebilirsiniz. Bu konu hakkında daha fazla bilgi için bakınız:
- Çok Fazla Önbellek
- Microsoft Windows Dinamik Önbellek Servisi
- Sistem dosya önbelleği fiziksel RAM'in çoğunu tükettiğinde uygulamalarda ve servislerde performans sorunları yaşarsınız
"Microsoft Windows Dinamik Önbellek Servisi"ni indirip dağıtarak sistem önbelleğinin tükettiği belleği kontrol edebilirsiniz.
Cihaz Sürücüsü Sorunları: Bir aygıt sürücüsü bu
MmAllocateContiguousMemoryfonksiyonu kullanırsa ve HighestAcceptableAddress parametresinin değerini 4 gigabayttan (GB) daha az ayarlarsa, Windows işletim sistemi SQL Server süreci dahil olmak üzere sistemdeki işlem setini sayfaya gönderebilir. Bu sorunu çözmek için, sürücü güncellemeleri için cihaz sürücüsünün satıcısıyla iletişime geçin.Bir aygıt sürücüsü bellek tahsis etmeye çalıştığında, Windows işletim sistemi çalışan diğer uygulamalar setini sayfaya gönderebilir. Bu Windows hotfix, soruna neden olan cihaz sürücüsünü bulmak için olay izleme yöntemiyle çalışmanızı sağlıyor. Çalışma seti kırpma davranışına neden olan belirli sürücü hakkında daha fazla bilgi için Sürekli Bellek Ayıran Sürücüleri Tanımlamak bölümüne bakınız.
İşletim Sistemi Sorunları: Windows işletim sisteminin SQL Server sürecinin çalışma setini sayfaya ayırmasına neden olan bilinen sorunları çözmek için, aşağıdaki Microsoft Bilgi Bankası makalelerinde açıklanan hotfixleri uygulayın.
Note
Hotfix'ler birikimlidir. Bir hotfix'in daha sonraki bir versiyonu, o hotfix'in önceki sürümlerini içerir.
SQL Server seti, sistem bazı gelişmiş TCP özellikleri kullandığında kısaltılabilir. Daha fazla bilgi için, RSS ve NetDMA gibi gelişmiş ağ performans özellikleri nasıl arızalanır sayfasına bakınız.
Windows Server 2008'de SQL Server çalıştırıyorsanız, çalışan set kırpmalarına veya diğer işletim sistemi bileşenlerinin gereksiz aşırı bellek tüketimine yol açabilecek bilinen sorunlar için düzeltmeler uygulamanız gerekir. Daha fazla bilgi için aşağıdaki makaleleri inceleyin. Rapor oluşturma süreci, Active Directory Tanı şablonuyla Windows Server 2008 tabanlı bir alan kontrolcüsünde rapor oluşturmak için Perfmon.exe çalıştırdığınızda yanıt vermeyi durdurabilir.
Eğer Windows Serve 2008 R2 üzerinde SQL Server çalıştırıyorsanız, çalışan set kesimine yol açabilecek bilinen sorunlar için düzeltmeler uygulamanız gerekir. Daha fazla bilgi için aşağıdaki makaleleri inceleyebilirsiniz:
- Windows 7 veya Windows Server 2008 R2 çalıştıran bir bilgisayar, büyük bir uygulama çalıştırdığınızda yanıt vermez hale gelir
- Düşük performans, NUMA tabanlı işlemcilere sahip ve Windows Server 2008 R2 veya Windows 7 çalıştıran bir bilgisayarda, bir iş parçacığının ilk 4 GB bellek içinde çok fazla bellek talep etmesi durumunda meydana gelir
- Windows Server 2008 R2'de Storport sürücüsü kullanıldığında bilgisayar aralıklı olarak kötü performans gösterir veya yanıt vermeyi durdurur
"Sayfaları bellekte kilitle" kullanıcı hakkını atamadan önce önemli hususlar
Lock sayfalarını hafızadaki kullanıcı hakkı atamadan önce ek dikkat etmelisiniz. Bu kullanıcı hakkını yanlış yapılandırılmış sistemlere atarsanız, sistem kararsız hale gelebilir veya tüm sistemde performans düşüşü yaşayabilir. Ayrıca, etkinlik kaydına etkinlik kimliği 333 de girilebilir.
Bu sorunlar için Microsoft Müşteri Destek Servisi (CSS) ile iletişime geçerseniz, CSS mühendisleri SQL Server hizmetinin başlangıç hesabı olarak kullanılan kullanıcı hesabı için bu kullanıcı hakkını iptal etmenizi talep edebilir. Bu adım, CSS mühendislerinin SQL Server ve sistemde çalışan diğer uygulamalar için çeşitli seçeneklerin gerekli yapılandırmasında kullanabileceği önemli performans verilerini toplamak için gerekli olabilir. CSS mühendisleri performans verilerini topladıktan sonra, Lock sayfalarını belleğe kilitleme kullanıcı tarafından SQL Server servisinin başlangıç hesabına atamanız mümkündür.
Kullanıcı hakındaki Lock sayfalarını bellekte atamadan önce, sisteme kurulan çeşitli uygulama ve hizmetlerin bellek gereksinimlerini belirlemek için bir Performans İzleyicisi günlüğü tuttuğunuzdan emin olun. Bu uygulamalar arasında SQL Server da bulunmaktadır. Bellek gereksinimlerini belirlemek için aşağıdaki temel bilgileri toplayın:
Maksimum sunucu belleği seçeneğini ve en az sunucu belleği seçeneğini doğru ayarladığınızdan emin olun. Bu seçenekler yalnızca SQL Server sürecinin tampon havuzunun bellek gereksinimini yansıtır. Bu seçenekler, SQL Server sürecindeki diğer bileşenler için tahsis edilen belleği içermez. Bu bileşenler şunları içerir:
- SQL Server işçi iş parçacıkları
- SQL Server'ın SQL Server sürecinin adres alanında yüklediği çeşitli DLL'ler ve bileşenler
- Yedek ve yenileme işlemleri
DLL'ler ve bileşenler arasında çeşitli OLE DB sağlayıcıları, genişletilmiş depolanmış prosedürler Microsoft sp_OACreate depolanmış prosedür için kullanılan COM nesneleri, bağlı sunucular ve SQL Server CLR bulunur. Bu bileşenler için tahsis edilen bellek, SQL Server sürecinin adres alanındaki tampon havuzu olmayan bölgeye girer. Tüm SQL Server sürecinin kullanabileceği maksimum bellek miktarını ideal olarak belirlemek için, buffer havuzunu kullanmayan bileşenler için tahsis edilen belleği SQL Server sürecinin kullanmasını istediğiniz toplam bellekten çıkarmalısınız. Sonra, kalan değeri kullanarak maksimum sunucu belleği seçeneğini ayarlayabilirsiniz. Maksimum sunucu belleği seçeneğini ve en az sunucu belleği seçeneğini ayarlamadan önce, SQL Server Books Online'da "Bellek seçeneklerini manuel ayarlama" konusunu dikkatlice gözden geçirmelisiniz.
Diğer uygulamaların ve Windows işletim sistemi bileşenlerinin bellek gereksinimlerini belirleyin. Uygulamalar diğer SQL Server bileşenlerini içerebilir; örneğin, SQL Server Agent, SQL Server Replication Agents, SQL Server Reporting Services, SQL Server Analysis Services, SQL Server Integration Services ve SQL Server Full Text Search. Yedek ve dosya kopyalama işlemleri yapan uygulamalar çok sayıda bellek kullanabilir. Toplu kopyalama ve dosya IO'su üreten Snapshot Agent gibi işlemleri düşünün. Maksimum sunucu belleği seçeneğinin ve en az sunucu belleği seçeneğinin değerini belirlerken tüm bu uygulamaların bellek gereksinimini göz önünde bulundurmalısınız. Her süreç için Süreç nesnesinin altında Özel Bayt sayacı ve Çalışma Kümesi sayacı kullanarak belirli bir süreç için bellek gereksinimini belirleyebilirsiniz.
Varsayılan olarak, hafızadaki Lock sayfaları kullanıcı hakkı zaten yerleşik Yerel Sistem hesabına atanmıştır. Daha fazla bilgi için aşağıdaki Microsoft web sitesini ziyaret edin: Yerel sistem için Bellekte Sayfaları Kilitlemem ayrıcalığını atamam gerekiyor mu?
Bir alan içindeki tüm SQL Server işlemleri için küresel olarak Windows kullanıcı hesabı kullanıyorsanız, atanan kullanıcı haklarını Grup Politikası yapılandırması kullanarak belirleyin. 32-bit bir SQL Server süreci bu hesabı başlatma hesabı olarak kullanabilir. Ancak, bu hesap, (AWE) özelliğini
Address Windowing Extensionsetkinleştirmek için Sayfaları hafızada kilitleme, kullanıcı hakkını gerektirir. Daha fazla bilgi için, SQL Server Books Online'daki "SQL Server'a maksimum bellek sağlama" başlıklı bölüme bakınız.Birden fazla SQL Server örneği için maksimum sunucu belleği seçeneğini ve en az sunucu belleği seçeneğini yapılandırmadan önce, her SQL Server örneği için tampon olmayan havuzun bellek gereksinimlerini göz önünde bulundurun. Sonra, bu seçenekleri her SQL Server örneği için yapılandırın.
İdeal olarak, bu temel bilgileri zirve yükler sırasında toplarsınız. Bu nedenle, çeşitli uygulamalar ve bileşenler için zirve yükü desteklemek için bellek gereksinimlerini belirleyebilirsiniz. Bellek gereksinimleri, sistemde çalışan faaliyetlere ve uygulamalara bağlı olarak sistemden sisteme değişiklik gösterir. Dinamik yönetim görünümünde sunulan bilgileri sorgulayarak sistemin düşük bellek koşullarıyla karşılaşıp karşılaşmadığını anlamak için sys.dm_os_process_memory yapabilirsiniz. Daha fazla bilgi için sys.dm_os_process_memory (Transact-SQL) bölümüne bakınız.
Windows Server 2008 ve R2 sürümlerinde eklenen iyileştirmeler
Windows Server 2008 ve Windows Server 2008 R2, bitişik bellek tahsis mekanizmasını geliştirir. Bu iyileştirme, Windows Server 2008 ve Windows Server 2008 R2'nin yeni bellek talepleri geldiğinde çalışan uygulama setinin sayfalanmasının etkilerini bir ölçüde azaltmasını sağlar.
Aşağıda, Microsoft'un "Windows'ta Bellek Yönetiminde İlerlemeler" beyaz kitabındaki iyileştirmelerin açıklaması yer almaktadır:
Windows Server 2008'de, fiziksel olarak bitişik bellek tahsisi büyük ölçüde artırılmıştır. Bitişik bellek tahsis etme talepleri başarılı olma olasılığı çok daha yüksektir çünkü bellek yöneticisi artık sayfaları dinamik olarak değiştirir, genellikle çalışma setini kesmeden veya I/O işlemleri yapmadan. Ayrıca, çekirdek yığınları ve dosya sistemi meta veri sayfaları gibi birçok sayfa türü artık değiştirilmek üzere adaydır. Sonuç olarak, her zaman daha bitişik hafıza genellikle mevcuttur. Ayrıca, bu tür tahsislerin elde edilmesi maliyeti büyük ölçüde azalır.
Daha fazla bilgi için SQL Server Çalışma Seti Trim Problemleri'ne bakabilirsiniz.
Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği hakkında açık veya zımni hiçbir garanti vermez.