BT’de Neyi İzlemeli: Microsoft SQL Katmanının İzlenmesi

Serdar Zeybek
8 Şubat 2012, Çarşamba

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.