我们一直试图追踪一个神秘的错误在生产中不时出现,甚至可以持续10分钟,它似乎是可重复的,要么通过我执行的一个预定任务,或只是运行另外两个邪恶的SP的快速接续,然后我们收到这个稳定的CPU负载,没有明显的原因后,SP的长期完成。
请看一下在我们的QA服务器上复制的截图:
我遵循了本文的说明,但没有成功,因为您可以看到DBCC INPUTBUFFER(6)
没有返回任何结果!
显然,我的问题还不清楚,我在想,如果有人知道DBCC INPUTBUFFER(ID)
做了什么,我就会从屏幕截图中意识到,我在第三个结果窗格中没有收到我应该在哪里的结果。因此,我的问题是,为什么我没有收到这些信息,或者,我如何才能到达导致SQL服务器进程中CPU负载高的任务的根源呢?
发布于 2019-11-08 07:21:07
WhoIsActive过程将返回查询使用的CPU数量。我会设置一个作业,每隔几分钟运行一次这个过程,并将其记录到一个表中。
如果你需要帮助设置它,这是布伦特·奥扎尔关于如何快速设置它的一个有用的帖子。(这里的代码是从文章中复制的)。当然,记住要相应地改变变量。
SET NOCOUNT ON;
DECLARE @retention INT = 7,
@destination_table VARCHAR(500) = 'WhoIsActive',
@destination_database sysname = 'Crap',
@schema VARCHAR(MAX),
@SQL NVARCHAR(4000),
@parameters NVARCHAR(500),
@exists BIT;
SET @destination_table = @destination_database + '.dbo.' + @destination_table;
--create the logging table
IF OBJECT_ID(@destination_table) IS NULL
BEGIN;
EXEC dbo.sp_WhoIsActive @get_transaction_info = 1,
@get_outer_command = 1,
@get_plans = 1,
@return_schema = 1,
@schema = @schema OUTPUT;
SET @schema = REPLACE(@schema, '<table_name>', @destination_table);
EXEC ( @schema );
END;
--create index on collection_time
SET @SQL
= 'USE ' + QUOTENAME(@destination_database)
+ '; IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(@destination_table) AND name = N''cx_collection_time'') SET @exists = 0';
SET @parameters = N'@destination_table varchar(500), @exists bit OUTPUT';
EXEC sys.sp_executesql @SQL, @parameters, @destination_table = @destination_table, @exists = @exists OUTPUT;
IF @exists = 0
BEGIN;
SET @SQL = 'CREATE CLUSTERED INDEX cx_collection_time ON ' + @destination_table + '(collection_time ASC)';
EXEC ( @SQL );
END;
--collect activity into logging table
EXEC dbo.sp_WhoIsActive @get_transaction_info = 1,
@get_outer_command = 1,
@get_plans = 1,
@destination_table = @destination_table;
--purge older data
SET @SQL
= 'DELETE FROM ' + @destination_table + ' WHERE collection_time < DATEADD(day, -' + CAST(@retention AS VARCHAR(10))
+ ', GETDATE());';
EXEC ( @SQL );
当您注意到问题发生时,请检查您的记录表并查看CPU列,这将使您了解哪些查询实际上使您的CPU上升。
一旦您发现导致此问题的查询,您将能够解决您的问题,如果您需要更多的帮助,在这个特定的查询,您可以在这里张贴在另一个问题。
https://dba.stackexchange.com/questions/252810
复制相似问题