我有一个 SQL Server 集群,它经常在工作时间之外达到 100% CPU。当实际情况发生时,我想收集一些信息以帮助进行故障排除。
例如,我正在考虑从 sys.dm_exec_requests 收集信息。
问题:如何根据 CPU 使用情况触发此信息收集
例如:当 CPU > 95% 时,将 sys.dm_exec_requests 的结果插入表中
非常欢迎对我应该收集的任何其他内容提出建议!
看来我可以通过警报来做到这一点,但我需要更好地理解计数器,因为我的示例没有触发,尽管 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
我认为我们可能需要深入了解 sys.dm_os_ring_buffers 和 sys.dm_os_sys_info 以获取 CPU 利用率数据。
请在下面找到 Glenn Berry 的脚本
资料来源:格伦·贝瑞的剧本