Belirli zamanlarda günlükte görünen FlushCache iletileri


22

Son zamanlarda birçok veritabanı performansı sorunu yaşıyoruz ve nedenini anlayabildiğimi anlamaya çalışıyorum. Bir DBA'm yok (yazılım geliştiriciyim), bu yüzden onu kanatlıyorum ve çevrimiçi bulduğum şeylerin çoğu bana yabancı bir dil gibi geliyor.

SQL Server'ı her sabah yeniden başlattık, çünkü iş günü boyunca çalışmasının tek yolu bu. Her sabah saat 5 civarında bu mesajı günlükte her iki dakikada bir almaya başladığımızı fark ettim:

FlushCache: 97488 ms'de (8139 yeni kirli buflerden kaçınıyor) 7432 yazıyla 11848 bufs db 9: 0 için temizlendi

en son hedef: 4, avgWriteLatency 32

ortalama verim: 0.72 MB / sn, G / Ç doygunluğu: 11635, bağlam anahtarları 18849

Sayılar elbette her seferinde farklıdır, ancak sunucuyu yeniden başlatana kadar bu mesajda aynı mesaj tekrar tekrar. Bunu nasıl yorumlayacağımdan emin değilim, Google'a bu konuda deniyorum ve topladığım tek şey, G / Ç ile ilgili bir sorun olabileceği ve bir şeyin olması gerekenden daha uzun sürdüğü anlamına geliyor. Son zamanlarda SSD kullanmaya geçtik, bu yüzden bir yazma sorunu olacağını düşünmedim.

Birisi buna ışık tutabilir mi?


Yanıtlar:


29

Hata günlüğündeki FlushCache iletisine denetim noktası günlüğü ve bu durumda uzun bir denetim noktası (kurtarma aralığından daha uzun süren bir denetim noktası olarak tanımlanır) neden olur. Oturum açmış olsun ya da olmasın, davranış 2012 ve 2012 öncesi ve sonrasında farklıdır. SQL Server 2012'den önce, denetim noktası günlüğü almak için bir izleme bayrağı (T3504) açmanız gerekir. Ancak SQL Server 2012'den başlayarak, uzun bir denetim noktasıyla karşılaşıldığında bu ileti varsayılan olarak günlüğe kaydedilir.

Şimdi "bu gerçekten kötü mü?" , bağlamları göz önüne alındığında gerçekten bu sayılara bakmaya başlamanız gerekir. Sadece 93 MB kirli arabellek temizlemek için 97+ saniye sürdü. Bu, potansiyel olarak çok fazla veri karmaşasının (gerçek kontrol noktasının kendisi sırasında, yaklaşık 64 MB değerinde tamponlar da kirlenmiş) ve veri değişikliğine ve / veya geri kalanına uymayan potansiyel bir depolama karışımı gibi görünebilir. G / Ç iş yükü.

Yapacağım şey , depolama altsisteminizin sağlığını doğrulamak, beklemeye bakmak ve örneğin genel bir performans resmi elde etmektir. Mantıksal disk perfmon sayaçlarına bir göz atın ve genel G / Ç karmaşasının verim , gecikme ve G / Ç ile ne olduğunu görün . Disklerin nasıl performans gösterdiğine dair daha canlı bir resim çizmenize yardımcı olur. Depolama alanınızı karşılaştırma yeteneğine sahipseniz, daha önce temel almadıysanız , söz konusu bu birimlerin neler yapabileceğini ( SQLIO bunun için harika bir yardımcı programdır) ve şu anda ne yaptıklarını görmelisiniz ( mevcut ölçütle karşılaştırmak için hacimler kalktığında bir referans referans çizgisine sahip olmak).

İşte bu mesajı açıklayan harika bir makale - Nasıl Çalışır: FlushCache mesajı SQL Server Hata Günlüğüne ne zaman eklenir?

EDIT : Sorunuzu yeniden okurken, bu yorumu kaçırmış olmalıyım:

Her sabah sabah 5 civarında bu mesajı almaya başladık

Yukarıdaki yönergelere göre, şu anda depolama alanınızda neler olduğunu görün. Bu, denetim noktası performansının acı çekmesine ve "uzun" olmasına neden olan, depolama alanında bir ücret alan ders kitabı planlanmış bir işlem gibi görünür.


2
SQLIO verilen bağlantıya göre Diskspd.exe tarafından aşıldı. Diskspd.exe bağlantısı: gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223
Tim Coker
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.