Identificando timeout no servidor
-
sábado, 28 de abril de 2012 19:31
Turma,
Tenho vários bancos de dados que rodão no mesmo servidor e tenho percebido que várias aplicações tem sofrido por timeout e tem trazido bastante dificuldade para gerenciar.
Temos URA, site, aplicações desktop, web, planilhas dinâmicas, enfim, uma diversidade enorme de possibilidade de problemas, mas antes de apontar o problema é necessário identificá-lo.
Comecei a utilizar o Trace do SQL 2008, apenas com a opção de Timeout, para verificar o que está acontecendo, e em pouco mais de 2h de monitoramento, passei de 2500 timeout em diversas aplicações.
Pelo Trace consegui identificar, a máquina que está executando a pessquisa, o banco de dados, o usuário, mas não consegui identificar qual é o comando (sentença SQL) que estava sendo executada no momento do timeout.
Portanto, preciso identificar qual é a sentença SQL que está provocando o timeout.
Valeu !!!
Pablicio
- Movido Gustavo Maia AguiarMVP, Moderator domingo, 29 de abril de 2012 14:32 (De:SQL Server - Desenvolvimento Geral)
Todas as Respostas
-
segunda-feira, 30 de abril de 2012 13:52
Pablicio,
vc está com um problema bem genérico. Podem existir várias razões para esse timeouts. O que posso te aconselhar é verificar algumas coisas para tentarmos identificar o problema.
Primeiro, vamos verificar como estão e quais são os tipos de espera em seu servidor problemático:WITH Waits AS (SELECT wait_type, wait_time_ms / 1000.0 AS WaitS, (wait_time_ms - signal_wait_time_ms) / 1000.0 AS ResourceS, signal_wait_time_ms / 1000.0 AS SignalS, waiting_tasks_count AS WaitCount, 100.0 * wait_time_ms / SUM (wait_time_ms) OVER() AS Percentage, ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS RowNum FROM sys.dm_os_wait_stats WHERE wait_type NOT IN ( 'CLR_SEMAPHORE', 'LAZYWRITER_SLEEP', 'RESOURCE_QUEUE', 'SLEEP_TASK', 'SLEEP_SYSTEMTASK', 'SQLTRACE_BUFFER_FLUSH', 'WAITFOR', 'LOGMGR_QUEUE', 'CHECKPOINT_QUEUE', 'REQUEST_FOR_DEADLOCK_SEARCH', 'XE_TIMER_EVENT', 'BROKER_TO_FLUSH', 'BROKER_TASK_STOP', 'CLR_MANUAL_EVENT', 'CLR_AUTO_EVENT', 'DISPATCHER_QUEUE_SEMAPHORE', 'FT_IFTS_SCHEDULER_IDLE_WAIT', 'XE_DISPATCHER_WAIT', 'XE_DISPATCHER_JOIN', 'BROKER_EVENTHANDLER', 'TRACEWRITE', 'FT_IFTSHC_MUTEX', 'SQLTRACE_INCREMENTAL_FLUSH_SLEEP', 'BROKER_RECEIVE_WAITFOR', 'ONDEMAND_TASK_QUEUE', 'DBMIRROR_EVENTS_QUEUE', 'DBMIRRORING_CMD', 'BROKER_TRANSMITTER', 'SQLTRACE_WAIT_ENTRIES', 'SLEEP_BPOOL_FLUSH', 'SQLTRACE_LOCK') ) SELECT W1.wait_type AS WaitType, CAST (W1.WaitS AS DECIMAL(14, 2)) AS Wait_S, CAST (W1.ResourceS AS DECIMAL(14, 2)) AS Resource_S, CAST (W1.SignalS AS DECIMAL(14, 2)) AS Signal_S, W1.WaitCount AS WaitCount, CAST (W1.Percentage AS DECIMAL(4, 2)) AS Percentage, CAST ((W1.WaitS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgWait_S, CAST ((W1.ResourceS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgRes_S, CAST ((W1.SignalS / W1.WaitCount) AS DECIMAL (14, 4)) AS AvgSig_S FROM Waits AS W1 INNER JOIN Waits AS W2 ON W2.RowNum <= W1.RowNum GROUP BY W1.RowNum, W1.wait_type, W1.WaitS, W1.ResourceS, W1.SignalS, W1.WaitCount, W1.Percentage HAVING SUM (W2.Percentage) - W1.Percentage < 95; -- percentage threshold GO
[]shttp://www.diaadiasql.com.br

