BT’de Neyi İzlemeli: Microsoft SQL Katmanının İzlenmesi
Microsoft SQL sunucularıyla ilgili hangi parametreleri izleyeceğimize karar vermek bazen zor ve karmaşık olabilir. Koşan uygulamanın çalışma mantığına göre değişiklik göstermekle birlikte, bu konuda hazırlanmış en iyi deneyimlerden faydalanmak başlangıç için en iyi çözüm olabilir.
Nereden Başlamalı?
SQL sunucuları doğal olarak bir donanımın üzerinde koştuklarından dolayı, tek başına sorguları izlemek veya tek başına işletim sistemini izlemek yeterli olmayabilir. Bu nedenle yukarda bahsi geçen tüm katmanlardan belirli metrikleri çekip izlemek ve bunları ilişkilendirip, sonrasında sonuçlarını değerlendirmek gerekebilir.
Aşağıdaki tabloda verilen metrikler en azından başlangıç aşamasında izlenmesi önerilenlerdir. Doğal olarak izlenmesi gerekebilecek çok daha fazla metrik bulunmaktadır. Daha detaylı bilgi için bizimle iletişime geçebilirsiniz.
Tablo 1. SQL Sunucunun Performansını Analiz Etmek İçin Kullanılabilecek Performans İzleme Metrikleri
Nesne
Metrik
Tanım
Değerler
Bellek
Available Bytes
Fiziksel olarak uygun durumdaki bellek boyutu
Sisteme göre değişir. Genel olarak toplamın %5’inden az olmamalıdır
Pages/sec
Önemli sayfa hatalarını gidermek amacıyla diske yazılan ya da diskten okunan bellek sayfalarının sayısı. Pages Input/sec ve Pages Output/sec değerlerinin toplamıdır.
Ortalama değer < 50 olmalıdır.
Page Faults/sec
Önemli sayfa hatalarını gidermek amacıyla sayfaların diskten okunma ve yazılma hızının toplam hızı
Ortalama değer gidişat değeri ile analiz edilmelidir.
Fiziksel Disk (Veri Diski, Günlük Diski)
% Disk Time
Fiziksel Diskin meşgul olduğu sürenin oransal karşılığını belirtir.
Ortalama değer < %50 olmalıdır.
Current Disk Queue Length
Disk erişimi için bekleyen sistem yanıtlarının sayısını belirtir.
Ortalama değer 0-2 arasında olmalıdır.
Disk Transfers/sec
Ne kadar veri içerdiğine bakılmaksızın, saniye başına bitirilen okuma ve yazma işlemlerinin hızını belirtir.
Ortalama değer < 50 olmalıdır.
Disk Bytes/sec
Yazma ya da okuma işlemleri sırasında sistemin diske/diskten ne hızda veri aktardığını gösterir.
Ortalama ne kadar yüksekse sistem o kadar verimli çalışıyor demektir. Bu nedenle gidişat değeri ile analiz edilmelidir.
İşlemci (_Total)
% Processor Time
İşlemcinin programları çalıştırma için geçirdiği sürenin bir ölçüsüdür. Seçili işlemcinin boşta olmayan bir iş parçacığını yürütme süresini oransal olarak gösterir.
Ortalama değer için %Processor Time değerleri > %80 ise ve aynı anda disk ve ağ arabirimi yoğun değilse analiz edilmelidir.
% Privileged Time
Seçili işlemcinin boşta olmayan bir iş parçacığını Privileged modunda yürütme süresinin oranını gösterir.
Ortalama değer > %85 ise ve aynı anda disk ve ağ arabirimi yoğun değilse analiz edilmelidir.
Sistem
Processor Queue Length
İşlemci zamanını kullanabilmek için bekleyen görevlerin sayısı.
Bu sayacın değeri sürekli olarak 2 ya da daha yüksekse analiz edilmelidir.
Context Switches/sec
Sistemdeki bütün işlemcilerin bir iş parçacığından diğerine geçiş hızının bileşik değerini gösterir (Geçiş sayısı/saniye).
Ortalama değeri 300 ile 1000 arasında gayet iyidir. 20.000 ve üstü ise bir sıkıntı göstergesi olabilir. Bu durumda bellek’deki page faults değeri ile korelasyona sokulmalıdır.
Ağ Arayüzü
Bytes Total/sec
Bir karttan geçen bütün ağ trafiğinin (gönderilen ve alınan) saniye başına hız değeri.
Ağ kapasitesi ile karşılaştırılmalıdır.
Ağ Segmenti
% Net Utilization
İlgil ağ segmentindeki ağ bant genişliğinin yüzdesel oranını gösterir.
SQL sunucu ortak bir ağ hub’ında ise önerilen değer <%30 olmasıdır. Atanmış bir full-duplex ağ bileşeni var ise, bu oran %90’lara kadar çıkabilir.
SQLServer:Buffer Manager
Buffer cache hit ratio
Gelen sayfa taleplerinin yüzde kaçının zaten bellekte var olduğuna dair bir oran verir
Ortalama değer > %90 olmalıdır
Page Life Expectancy
Bellekde bulunan sayfaların ne kadar süredir bellekde bulunduğunu saniye cinsinden değeri
Ortalama değer > 300 olmalıdır
Free pages
Butun boş listelerdeki toplam sayfa sayısını gösterir.
Bu değerin ortalamada > 640 olması beklenir.
SQLServer:Access Methods
FreeSpace Scans/sec
Yeni bir kayıt fragmanını eklemek için başlatılan boş alan arama sayısının saniye başına oranını belirtir.
Ortalama değer gidişat değeri ile analiz edilmelidir.
Full Scans/sec
Bu sayaç, temel tablolar veya dizinler üzerinde sınırsız tam tarama sayısını izler.
Ortalama değer gidişat değeri ile analiz edilmelidir. Yüksek olmasına birkaç sebep bulunmaktadır. Eksik indeksleme ve çok fazla satır talebi gelmesi.
SQLServer:Latches
Total Latch Wait Time (ms)
Son saniye içerisinde beklemek zorunda kalan mandal (latch) istekleri için toplam mandal bekleme süresini (milisaniye) gösterir.
Bu metrik için yüksek bir değer olması SQL sunucusunun kendi dahili senkronizasyon mekanizması için çok fazla zaman harcadığını gösterir. Ortalama değer gidişat değeri ile analiz edilmelidir.
SQLServer:Locks(_Total)
Lock Timeouts/sec
Saniye başına oluşan kilitleme zaman aşımlarının hızını gösterir.
Bu değerin 0 olması beklenir. Bu değerin yüksek olması veritabanında aşırı bir kilitleme oluştuğunun göstergesidir.
Lock Wait Time (ms)
Kilitlemenin bekleme süresini gösterir.
Bu değerin çok düşük olması beklenir. Bu değerin yüksek olması veritabanında aşırı bir kilitleme oluştuğunun göstergesidir.
Number of Deadlocks/sec
Ölümcül kilitleme sayısının saniye başına hızını gösterir.
Bu değerin 0 olması beklenir. Sıfır dışında bir değer mevcut ise, buna neden olan talebin incelenmesi gerekir.
SQLServer:SQL Statistics
Batch Requests/sec
Saniye başına işlenen SQL istek sayısını gösterir.
Bu değer ile Web Request/sec arasında direk ilişki bulunmaktadır. Ortalama değer gidişat değeri ile analiz edilmelidir.
SQL Re-Compilations/sec
Bu metrik tekrar derlenen SP’ler için saniye başına SQL Tekrar Derleme hızını gösterir
Bu değerin sıfıra yakın olması beklenir. Bu değerin yüksek olması durumunda neyin tekrar derlemeye sebep olduğunu bulunması için SQL profiler ile analiz edilmesi gerekebilir.
SQLServer:General Statistics
User Connections
Bağlı kullanıcı sayısını gösterir.
Özellikle yük dengelemenin kullanıldığı ortamlarda kullanıcı dağılımının kontrolü için kullanılabilir. Ortalama değer gidişat değeri ile analiz edilmelidir.
Bu metriklerin nasıl izleneceği ile ilgili olarak birden fazla yöntem ve araç mevcuttur Örneğin Windows 2008 içerisindeki Performans Monitörü aracı. Aşağıda SQL Studio üzerinden izlenmesi ile ilgili küçük bir örnek verilmiştir.
Bu konuda bilgi edinmek için bizlerle temas kurabilirsiniz.
BT’de Neyi İzlemeli: Microsoft SQL Katmanının İzlenmesi
BT’de Neyi İzlemeli: Microsoft SQL Katmanının İzlenmesi
Microsoft SQL sunucularıyla ilgili hangi parametreleri izleyeceğimize karar vermek bazen zor ve karmaşık olabilir. Koşan uygulamanın çalışma mantığına göre değişiklik göstermekle birlikte, bu konuda hazırlanmış en iyi deneyimlerden faydalanmak başlangıç için en iyi çözüm olabilir.
Nereden Başlamalı?
SQL sunucuları doğal olarak bir donanımın üzerinde koştuklarından dolayı, tek başına sorguları izlemek veya tek başına işletim sistemini izlemek yeterli olmayabilir. Bu nedenle yukarda bahsi geçen tüm katmanlardan belirli metrikleri çekip izlemek ve bunları ilişkilendirip, sonrasında sonuçlarını değerlendirmek gerekebilir.
Aşağıdaki tabloda verilen metrikler en azından başlangıç aşamasında izlenmesi önerilenlerdir. Doğal olarak izlenmesi gerekebilecek çok daha fazla metrik bulunmaktadır. Daha detaylı bilgi için bizimle iletişime geçebilirsiniz.
Tablo 1. SQL Sunucunun Performansını Analiz Etmek İçin Kullanılabilecek Performans İzleme Metrikleri
Bu metriklerin nasıl izleneceği ile ilgili olarak birden fazla yöntem ve araç mevcuttur Örneğin Windows 2008 içerisindeki Performans Monitörü aracı. Aşağıda SQL Studio üzerinden izlenmesi ile ilgili küçük bir örnek verilmiştir.
Bu konuda bilgi edinmek için bizlerle temas kurabilirsiniz.