Welcome to Sign in | Help
in Search

Average Latch Wait Time

Last post 01-27-2010, 9:00 PM by rremus. 6 replies.
Sort Posts: Previous Next
  •  01-22-2010, 2:59 PM 8008

    Average Latch Wait Time

    Buna ziua,

    Pe o masina W2K3EE/R2/SP2 cu engine SqlServer2005St.Ed./SP3 am implementat mai multe tipuri de alerte pentru a fi notificat prin email asupra aparitiei unor eventuale probleme in functionarea acestuia. Incercand sa creez baseline-uri pentru fiecare din ele, la alerta 'Average Latch Wait Time(ms)' imi da niste timpi catastrofic de mari(3ore?)

    Mesajul din alerta este:

    DESCRIPTION: The SQL Server performance counter 'Average Latch Wait Time (ms)' (instance 'N/A') of object 'SQLServer:Latches' is now above the threshold of 20000.00 (the current value is 10707437.00).

    Semnificatia alertei din BOL este: "Average latch wait time(ms) for latch requests that had to wait"
    Am gandit ca un treshold de 20 sec ar fi chiar mult prea mare, dar se pare ca am avut o surpriza. Serverul are 10GB RAM, functioneaza cu AWE disable, Total server Memory(SqlServer)ocupa 1,6GB dintr-un total de vreo 2,5GB RAM ocupati. Numarul de proceasoare este 4, toate avand afinitatea bifata in mod automatic(atat ptr sqlserver cat si ptr. I/O). De cateva ori am gasit incarcare foarte mare pe procesoare, in urma rularii unor proceduri cu multiple query-uri complexe

    Care ar fi explicatia si cum pot micsora aceasta valoare?

     


  •  01-22-2010, 5:28 PM 8009 in reply to 8008

    Re: Average Latch Wait Time

    Sunt posibilitati multiple pentru cauza unei valori mari.
    Una din ele poate fi un bottleneck I/O datorat design-ului interogarilor si bazei de date. Examinati disk sec/transfer si avg disk queue length.
    In plus examinati si buffer cache hit ratio.


    Cristian Andrei Lefter, SQL Server MVP
    MCT, MCSA, MCDBA, MCAD, MCSD .NET,
    MCTS, MCITP - Database Administrator SQL Server 2005
    http://sqlserver.ro
  •  01-25-2010, 8:52 PM 8014 in reply to 8008

    Re: Average Latch Wait Time

    Counter-ul nu sa resetat corect la un server shutdown/restart. Un asemenea timp nu are cum sa fie o valoare reala. Ruleaza DBCC SQLPERF ("sys.dm_os_latch_stats" , CLEAR); si DBCC SQLPERF( "sys.dm_os_wait_stats" , CLEAR); ca sa se reseteze la 0.

    http://rusanu.com
  •  01-26-2010, 10:13 AM 8016 in reply to 8009

    Re: Average Latch Wait Time

    Valorile raportate pentru "Average Latch Wait time(ms)", "Buffer cache hit ratio" de catre Sql Server(Sql Agent-Alerts) difera fata de cele raportate de catre utilitarul Performance(Administrative Tools\Performance)

    Pe serverul cu pricina am:

    "Buffer cache hit ratio" in alerta SqlServer are valoarea 0(current value), iar in Performance media e 96 iar maximum 99.88(oscileaza in jurul acestor valori). Masoara altceva SqlServer, sau e o valoare exprimata in mod diferit? Pe alte servere SqlServer ce le monitorizez, valoarea "Buffer cache hit ratio" din alerta SqlServer raporteaza valori curente de 5000-6000. Nu inteleg de fapt ce reprezinta acestea. Ar trebui sa fie in procente.

    "Average latch wait time(ms)" in alerta SqlServer are valoarea de 12150410ms(current value-peste 3 ore) iar in Performance am gasit valori osciland in jur de 1600-28000ms(16-28sec). Poate fi o valoare asa mare surprinsa intr-un moment de sqlserver sau calculeaza acesta diferit fata de Performance?

    Alti parametri(din Performance):
    Avg disk queue length - maxim 0,459; medie 0,016
    Avg disk sec/transfer - maxim 0,004; medie 0,001 

    Toate valorile am cautat sa le surprind cam in acelasi moment timp

    Am rulat fara eroare si DBCC SQLPERF ("sys.dm_os_latch_stats",CLEAR) si DBCC SQLPERF ("sys.dm_os_wait_stats",CLEAR), apoi am fixat treshold-ul la 30 sec. Dupa aceasta alerta este:
    "The SQL Server performance counter 'Average Latch Wait Time (ms)' (instance 'N/A') of object 'SQLServer:Latches' is now above the threshold of 30000.00 (the current value is 12153751.00)."

  •  01-26-2010, 9:42 PM 8019 in reply to 8016

    Re: Average Latch Wait Time

    Tu cind zici ca te cind zici ca te uiti la diverse valori ale counterilor, unde te uiti? Exista doua locuri unde le poti vedea: in API de performance counters (adica unde le vede si perfmon.exe) sau in sys.dm_os_performance_counter. Acesta din urma i-tzi va arata totdeauna valoarea RawValue a ultimului sample. Ca sa calculezi valoarea actuala trebuie sa vezi ce tip de performance counter este si fiecare tip are o alta formula de calcul, in general pornind de la doua RawValue si diferenta de timp intre ele, dar unele tipuri implica si un BaseValue. La ce te uiti tu pare ca este un RawValue si nu are nici un sens sa faci alerte pe RawValue (decid daca sint de tip NumberOfItems64, la care RawValue si valoarea calculata sint identice). Vezi http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecountertype.aspx pentru tipuri de counteri si cum se calculeaza valoarea la fiecare tip.
    http://rusanu.com
  •  01-27-2010, 11:13 AM 8020 in reply to 8019

    Re: Average Latch Wait Time

    Am restartat serverul, apoi am rulat:     select * from sys.dm_os_performance_counters    si am obtinut:

    Pentru primul counter  "Buffer cache hit ratio":

    object_name                            Counter_name          Instance_name         cntr_value         cntr_type
    SQLServer:Buffer Manager   Buffer cache hit ratio                                       2905              537003264

    Apoi, in Sql Server Agent-Alerts  creez o alerta pe care am 'scriptat-o'(Script alert as-Create to) mai jos:

    USE [msdb]
    GO
    /****** Object:  Alert [Buffer Manager: Buffer Cache Hit Ratio]    Script Date: 01/27/2010 10:42:27 ******/
    EXEC msdb.dbo.sp_add_alert @name=N'Buffer Manager: Buffer Cache Hit Ratio',
            @message_id=0,
            @severity=0,
            @enabled=0,
            @delay_between_responses=0,
            @include_event_description_in=1,
            @category_name=N'[Uncategorized]',
            @performance_condition=N'SQLServer:Buffer Manager|Buffer cache hit ratio||<|90',
            @job_id=N'00000000-0000-0000-0000-000000000000'

    Teoretic, acum alerta nu ar trebui sa semnalizeze nimic intrucat cntr_value=2905>90, insa ea returneaza mesajul(via email):

    DESCRIPTION:    The SQL Server performance counter 'Buffer cache hit ratio' (instance 'N/A') of object 'SQLServer:Buffer Manager' is now below the threshold of 90.00 (the current value is 0.00).
    Aici, chiar nu inteleg de unde ia aceasta valoare(=0.00) Pe alte servere unde am pus aceasta alerta sunt returnate valorile corecte din sys.dm_os_performance_counters(5000-6000)

    Pentru al doilea counter "Average Latch Wait Time(ms)":

    object_name                     Counter_name                          Instance_name         cntr_value         cntr_type
    SQLServer:Latches    Average Latch Wait Time (ms)                                              351971          1073874176

    Similar, creez in Sql Server Agent-Alerts, o alerta pe care o descriu mai jos:

    USE [msdb]
    GO
    /****** Object:  Alert [Latches: Average Latch Wait Time]    Script Date: 01/27/2010 11:03:28 ******/
    EXEC msdb.dbo.sp_add_alert @name=N'Latches: Average Latch Wait Time',
            @message_id=0,
            @severity=0,
            @enabled=1,
            @delay_between_responses=43200,
            @include_event_description_in=1,
            @category_name=N'[Uncategorized]',
            @performance_condition=N'SQLServer:Latches|Average Latch Wait Time (ms)||>|30000',
            @job_id=N'00000000-0000-0000-0000-000000000000'

    Treshold-ul l-am fixat la 30secunde, iar alerta semnaleaza depasirea prin mesajul(via email):

    DESCRIPTION:    The SQL Server performance counter 'Average Latch Wait Time (ms)' (instance 'N/A') of object 'SQLServer:Latches' is now above the threshold of 30000.00 (the current value is 351971.00).

    Deci in acest caz, valoarea a fost corect luata din sys.dm_os_performance_counters

  •  01-27-2010, 9:00 PM 8025 in reply to 8020

    Re: Average Latch Wait Time

    sys.dm_os_performance_counters da valoarea RawValue. Average Latch Time este un counter de tip 1073874176 , deci AverageCount64. Counterii de tipul asta trebuiesc calculati din doua sample-uri consecutive. Nu poti face un alert pe RawValue, pentru ca va creste continuu. Daca vrei sa folosesti SQL Agent alert dircet pe valorile RawValue, trebuie sa te multumesti cu counteri de tipul NumberOfItems64, deci 65792.
    http://rusanu.com
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems