Eu tenho um cluster de servidor SQL que geralmente atinge 100% da CPU fora do horário de trabalho. Desejo reunir algumas informações para ajudar na solução de problemas quando a condição real estiver ocorrendo.
Estou pensando em coletar informações de sys.dm_exec_requests, por exemplo.
Pergunta: Como posso fazer com que essa coleta de informações ocorra com base na condição de utilização da CPU
Por Exemplo: Insira os resultados de sys.dm_exec_requests em uma tabela quando CPU > 95%
sugestões para qualquer outra coisa que eu deva reunir são muito bem-vindas!
Parece que posso fazer isso com alertas, mas preciso entender melhor os contadores, pois meu exemplo não dispara, apesar da CPU> 5%
USE [msdb]
GO
EXEC msdb.dbo.sp_update_alert @name=N'My Test CPU Alert',
@message_id=0,
@severity=0,
@enabled=1,
@delay_between_responses=0,
@include_event_description_in=0,
@database_name=N'',
@notification_message=N'',
@event_description_keyword=N'',
@performance_condition=N'Resource Pool Stats|CPU usage %|default|=|5',
@wmi_namespace=N'',
@wmi_query=N'',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO
Acho que precisamos mergulhar em sys.dm_os_ring_buffers e sys.dm_os_sys_info para obter os dados de utilização da CPU.
Por favor, encontre abaixo o roteiro de Glenn Berry
Fonte: Roteiro de Glenn Berry