{"id":12055,"date":"2020-04-19T07:50:48","date_gmt":"2020-04-19T10:50:48","guid":{"rendered":"https:\/\/www.fabriciolima.net\/?p=12055"},"modified":"2020-05-11T20:31:46","modified_gmt":"2020-05-11T23:31:46","slug":"monitoramento-no-sql-server-o-que-fazer-quando-receber-um-alerta-de-cpu","status":"publish","type":"post","link":"https:\/\/fabriciolima.net\/blog\/2020\/04\/19\/monitoramento-no-sql-server-o-que-fazer-quando-receber-um-alerta-de-cpu\/","title":{"rendered":"Monitoramento no SQL Server &#8211; O que fazer quando receber um alerta de CPU?"},"content":{"rendered":"<p>Fala Pessoal,<\/p>\n<p>Em Setembro de 2019 liberei uma nova vers\u00e3o dos meus scripts para a cria\u00e7\u00e3o de 40 alertas no SQL Server:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.fabriciolima.net\/blog\/2019\/09\/22\/passo-a-passo-de-como-criar-40-alertas-para-monitorar-seu-sql-server\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.fabriciolima.net\/blog\/2019\/09\/22\/passo-a-passo-de-como-criar-40-alertas-para-monitorar-seu-sql-server\/<\/a><\/li>\n<\/ul>\n<p>Legal Fabr\u00edcio, mas o que eu fa\u00e7o quando receber esses Alertas?<\/p>\n<p>Esse \u00e9 o quinto v\u00eddeo para ajudar a dar essa resposta para voc\u00eas.<\/p>\n<p>Nesse v\u00eddeo vou mostrar o que voc\u00ea pode analisar quando receber um alerta de CPU para ajudar a resolver seu problema de lentid\u00e3o:<\/p>\n<p><iframe loading=\"lazy\" title=\"Monitoramento no SQL Server - O que fazer quando receber um alerta de CPU?\" width=\"1170\" height=\"658\" src=\"https:\/\/www.youtube.com\/embed\/z7Gu_ufXuzs?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<header><\/header>\n<header>C\u00f3digo utilizado no v\u00eddeo:<\/header>\n<header><\/header>\n<header>\n<pre class=\"lang:default decode:true \">select *\r\nfrom Alert_Parameter\r\nwhere Nm_Alert = 'CPU Utilization'\r\n\r\nupdate Alert_Parameter\r\nset Vl_Parameter = 40\r\nwhere Nm_Alert = 'CPU Utilization'\r\n\r\n-- Rodei as queries das outras conex\u00f5es\r\n\r\nupdate Alert_Parameter\r\nset Vl_Parameter = 85\r\nwhere Nm_Alert = 'CPU Utilization'\r\n\r\n\r\n\r\n\r\n--Conferir a Vers\u00e3o do SQL Server\r\nSELECT @@version\r\n\r\n\r\n-- Quantidade de cores dispon\u00edveis para o SQL Server\r\nSELECT current_tasks_count,runnable_tasks_count,* \r\nFROM sys.dm_os_schedulers\r\nWHERE scheduler_id &lt; 255\r\nAND status = 'VISIBLE ONLINE'\r\n\r\n--J\u00e1 peguei casos do cliente ter 8 sockets configurados no SQL Server Standard, e o SQL estar utilizando apenas 4.\r\n\t \r\n\r\n--------------------- Algumas dicas para se fazer quando tiver um gargalo de CPU\r\n\r\n-- Conferir no task Manager se tem outro processo consumindo muita CPU al\u00e9m do SQL Server\r\n\r\n\r\n-- Validar a o que est\u00e1 rodando no banco de dados\r\nexec sp_whoisactive @get_task_info =2, @get_plans = 1, @delta_interval = 1, @show_sleeping_spids = 0, @get_outer_command = 1\r\n\r\n\r\n-- Queries nesse momento utilizando os cores de CPU\r\nSELECT \r\na.scheduler_id ,\r\nb.session_id,\r\n (SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset \/ 2+1 , \r\n      ( (CASE WHEN statement_end_offset = -1 \r\n         THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2) \r\n         ELSE statement_end_offset END)  - statement_start_offset) \/ 2+1))  AS sql_statement\r\nFROM sys.dm_os_schedulers a \r\nINNER JOIN sys.dm_os_tasks b on a.active_worker_address = b.worker_address\r\nINNER JOIN sys.dm_exec_requests c on b.task_address = c.task_address\r\nCROSS APPLY sys.dm_exec_sql_text(c.sql_handle) AS s2 \r\n\r\n\r\n\r\n-- Se for uma procedure, rodar um sp_recompile\r\n\r\n-- Limpar o PlanCache\r\nGO  \r\nSELECT plan_handle, st.text  \r\nFROM sys.dm_exec_cached_plans   \r\nCROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st  \r\nWHERE text LIKE N'%Gols_Jogadores_SQLGOL%';  \r\nGO  \r\n-- Remove the specific plan from the cache.  \r\nDBCC FREEPROCCACHE (0x0600070002DAC81B200AF7C81402000001000000000000000000000000000000000000000000000000000000);  \r\nGO  \r\nDBCC FREEPROCCACHE\r\n\r\n-- Atualizar as estat\u00edsticas das tabelas envolvidas\r\n\r\n--Analisar a possibilidade de cria\u00e7\u00e3o de um \u00edndice ou reescrita das queries envolvidas\r\n\r\n\r\n--Queries que mais consomem CPU no traces\r\nSELECT *\r\nFROM Traces..Queries_Profile\r\nORDER BY CPU DESC\r\n\r\n\r\n--Queries do Cache com maior consumo de CPU\r\nif object_id('tempdb..#Temp_Trace') is not null drop table #Temp_Trace\r\n\r\nsELECT TOP 50 total_worker_time ,  sql_handle,execution_count,last_execution_time,last_worker_time\r\ninto #Temp_Trace\r\nFROM sys.dm_exec_query_stats A\r\nwhere last_elapsed_time &gt; 20\r\n and last_execution_time &gt; dateadd(ss,-600,getdate()) --ultimos 5 min\r\norder by A.total_worker_time desc\r\n\r\nselect distinct A.*, B.*, DB.name\r\nfrom #Temp_Trace A\r\ncross apply sys.dm_exec_sql_text (sql_handle) B\r\njoin sys.databases DB on B.dbid = DB.database_id\r\norder by 1 DESC\r\n\r\n\r\n--Consumo de CPU por base de dados\r\nWITH DB_CPU_Statistics\r\nAS\r\n(SELECT pa.DatabaseID, DB_NAME(pa.DatabaseID) AS [Database Name], SUM(qs.total_worker_time\/1000) AS [CPU_Time_Ms]\r\nFROM sys.dm_exec_query_stats AS qs WITH (NOLOCK)\r\nCROSS APPLY (SELECT CONVERT(INT, value) AS [DatabaseID]\r\nFROM sys.dm_exec_plan_attributes(qs.plan_handle)\r\nWHERE attribute = N'dbid') AS pa\r\nGROUP BY DatabaseID)\r\nSELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [CPU Ranking],\r\n[Database Name], [CPU_Time_Ms] AS [CPU Time (ms)],\r\nCAST([CPU_Time_Ms] * 1.0 \/ SUM([CPU_Time_Ms]) OVER() * 100.0 AS DECIMAL(5, 2)) AS [CPU Percent]\r\nFROM DB_CPU_Statistics\r\nWHERE DatabaseID &lt;&gt; 32767 -- ResourceDB\r\nORDER BY [CPU Ranking] OPTION (RECOMPILE);\r\n\r\n\r\n--Pode olhar as queries que mais consomem CPU no Query Store \r\n\r\n--Posts de query store no meu blog\r\nhttps:\/\/www.fabriciolima.net\/blog\/tag\/query-store\/\r\n<\/pre>\n<p>&nbsp;<\/p>\n<\/header>\n<header class=\"entry-header\"><b>Gostou desse Post?<\/b><\/header>\n<p>Curta, comente, compartilhe\u2026<\/p>\n<p>Curta nossa p\u00e1gina no\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.facebook.com\/SouPowerTuning\" target=\"_blank\" rel=\"external noopener noreferrer nofollow\" data-wpel-link=\"external\">Facebook<\/a>\u00a0,\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.linkedin.com\/company\/sou-powertuning\" target=\"_blank\" rel=\"noopener external noreferrer nofollow\" data-wpel-link=\"external\">LinkedIn<\/a>\u00a0e\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.instagram.com\/soupowertuning\/\" target=\"_blank\" rel=\"noopener external noreferrer nofollow\" data-wpel-link=\"external\">Instagram<\/a>\u00a0para receber Dicas de Leituras, V\u00eddeos e Eventos sobre SQL Server.<\/p>\n<p>At\u00e9 a pr\u00f3xima.<\/p>\n<p>Abra\u00e7os,<\/p>\n<p>Fabr\u00edcio Lima<\/p>\n<p>CEO na Fabr\u00edcio Lima Solu\u00e7\u00f5es em BD<\/p>\n<p>Microsoft Data Platform MVP<\/p>\n<p>Instagram:<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.instagram.com\/fabriciofrancalima\/\" target=\"_blank\" rel=\"noopener external noreferrer nofollow\" data-wpel-link=\"external\">@fabriciofrancalima<\/a><\/p>\n<p>Linkedin:\u00a0<a class=\"external-link wpel-icon-left\" href=\"https:\/\/www.linkedin.com\/in\/fabriciofrancalima\/\" target=\"_blank\" rel=\"noopener noreferrer external nofollow\" data-wpel-link=\"external\">https:\/\/www.linkedin.com\/in\/fabriciofrancalima\/<\/a><\/p>\n<p>Consultoria:\u00a0comercial@powertuning.com.br<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fala Pessoal, Em Setembro de 2019 liberei uma nova vers\u00e3o dos meus scripts para a cria\u00e7\u00e3o de 40 alertas no SQL Server: https:\/\/www.fabriciolima.net\/blog\/2019\/09\/22\/passo-a-passo-de-como-criar-40-alertas-para-monitorar-seu-sql-server\/ Legal Fabr\u00edcio, mas o que eu fa\u00e7o quando receber esses Alertas? Esse \u00e9 o quinto v\u00eddeo para ajudar a dar essa resposta para voc\u00eas. Nesse v\u00eddeo vou mostrar o que voc\u00ea pode [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[3,991,1248,33,280],"tags":[1778,1566,1261,1268,1780,1328,1779,1777,1782,1262,1270,1781,33,1271],"class_list":["post-12055","post","type-post","status-publish","format-standard","hentry","category-administracao-de-bd","category-dba-remoto","category-queries-do-dia-a-dia","category-sql-server","category-virtual-pass-br","tag-100-de-cpu","tag-alerta-cpu","tag-alertas","tag-cpu","tag-cpu-alta","tag-cpu-sql-server","tag-gargalo-de-cpu","tag-lentidao-cpu","tag-monitoramento-cpu","tag-monitoramento-sql-server","tag-problema-cpu","tag-queries-consumindo-cpu","tag-sql-server","tag-sql-server-cpu"],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":4649,"url":"https:\/\/fabriciolima.net\/blog\/2016\/06\/22\/queries-do-dia-a-dia-monitorando-contadores-de-forma-simples-via-dmv\/","url_meta":{"origin":12055,"position":0},"title":"Queries do Dia a Dia &#8211; Monitorando Contadores de forma simples via DMV","author":"Fabr\u00edcio Lima","date":"22 de junho de 2016","format":false,"excerpt":"Ol\u00e1 Pessoal, Hoje vou compartilhar com voc\u00eas mais um script que utilizo nos clientes que realizo um monitoramento di\u00e1rio do SQL Server. Realizando uma busca na internet voc\u00ea encontra algumas formas de monitorar contadores no SQL Server. Voc\u00ea pode enviar dados do perfmon para um arquivo e depois importar para\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/04\/POSTContadoresPerformance.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":4201,"url":"https:\/\/fabriciolima.net\/blog\/2016\/04\/14\/casos-do-dia-a-dia-comprei-um-servidor-melhor-e-o-sql-server-esta-mais-lento-como-pode\/","url_meta":{"origin":12055,"position":1},"title":"Casos do Dia a Dia: Comprei um servidor melhor e o SQL Server est\u00e1 mais lento! Como pode???","author":"Fabr\u00edcio Lima","date":"14 de abril de 2016","format":false,"excerpt":"Ol\u00e1 Pessoal, Passando para compartilhar com voc\u00eas mais uma experi\u00eancia que tive no meu dia a dia de Consultor SQL Server. Uma empresa entrou em contato comigo para ajud\u00e1-los a entender porque um servidor SQL Server novo e com hardware melhor estava com uma performance pior que o antigo. Cen\u00e1rio:\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2016\/04\/CPU-Z.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":8435,"url":"https:\/\/fabriciolima.net\/blog\/2017\/12\/11\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-1\/","url_meta":{"origin":12055,"position":2},"title":"Melhorando a Performance de Consultas no Totvs Protheus &#8211; Parte 1","author":"Fabr\u00edcio Lima","date":"11 de dezembro de 2017","format":false,"excerpt":"Fala Pessoal, No meu dia a dia de Consultor SQL Server, atendo muitos clientes com Totvs Protheus e SQL Server. Inclusive j\u00e1 compartilhei algumas experi\u00eancias com voc\u00eas aqui no Blog: 5 motivos para quem utiliza o Protheus (Totvs) contratar um DBA SQL Server Migrando um SQL Server 2008 Totvs Protheus\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte1_1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte1_1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte1_1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte1_1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/12\/queryprotheysparte1_1.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":10318,"url":"https:\/\/fabriciolima.net\/blog\/2021\/01\/07\/melhorando-a-performance-de-consultas-no-totvs-protheus-parte-9\/","url_meta":{"origin":12055,"position":3},"title":"Melhorando a Performance de Consultas no Totvs Protheus \u2013 Parte 9","author":"Fabr\u00edcio Lima","date":"7 de janeiro de 2021","format":false,"excerpt":"\u00a0 Fala Pessoal, Esse post est\u00e1 h\u00e1 tanto tempo no rascunho do meu Blog que at\u00e9 o nome da empresa na foto est\u00e1 antigo. Vou manter assim mesmo. \u00a0 Estamos de volta com mais um epis\u00f3dio da s\u00e9rie de an\u00e1lise de queries de ambientes Totvs Protheus. Antes de lerem esse\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Totvs_Protheus_E09_1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Totvs_Protheus_E09_1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Totvs_Protheus_E09_1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Totvs_Protheus_E09_1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Totvs_Protheus_E09_1.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/fabriciolima.net\/blog\/wp-content\/uploads\/2019\/02\/Totvs_Protheus_E09_1.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":7321,"url":"https:\/\/fabriciolima.net\/blog\/2017\/02\/14\/usa-o-sql-server-express-por-que-ainda-nao-migrou-para-a-versao-2016-e-de-graca\/","url_meta":{"origin":12055,"position":4},"title":"Usa o SQL Server Express? Por que ainda n\u00e3o migrou para a vers\u00e3o 2016? \u00c9 de gra\u00e7a!","author":"Fabr\u00edcio Lima","date":"14 de fevereiro de 2017","format":false,"excerpt":"Fala Pessoal, Semana passada eu atendi uma empresa que utilizava o SQL Express para sua aplica\u00e7\u00e3o. Eles utilizavam a vers\u00e3o 2014 e j\u00e1 estavam com a base em 6 GB. Fiz um atendimento r\u00e1pido para eles e deixei como dica migrarem para a vers\u00e3o Express do SQL Server 2016, j\u00e1\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2017\/02\/SQLExpress2016_Instalacao.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3129,"url":"https:\/\/fabriciolima.net\/blog\/2014\/11\/03\/treinamento-sql-server-tarefas-do-dia-a-dia-de-um-dba\/","url_meta":{"origin":12055,"position":5},"title":"Treinamento SQL Server: Tarefas do dia a dia de um DBA","author":"Fabr\u00edcio Lima","date":"3 de novembro de 2014","format":false,"excerpt":"\u00a0 Ol\u00e1 Pessoal, Um amigo quer entrar para a \u00e1rea de administra\u00e7\u00e3o de banco de dados e me solicitou um treinamento que abordasse as atividades de um DBA no seu dia a dia de trabalho. Diante disso, resolvi preparar um treinamento para ele, mas abrirei o treinamento para mais 4\u2026","rel":"","context":"Em &quot;Administra\u00e7\u00e3o de Banco de Dados&quot;","block_context":{"text":"Administra\u00e7\u00e3o de Banco de Dados","link":"https:\/\/fabriciolima.net\/blog\/category\/sql-server\/administracao-de-bd\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.fabriciolima.net\/blog\/wp-content\/uploads\/2014\/11\/Treinamento.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/12055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/comments?post=12055"}],"version-history":[{"count":4,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/12055\/revisions"}],"predecessor-version":[{"id":12160,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/posts\/12055\/revisions\/12160"}],"wp:attachment":[{"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/media?parent=12055"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/categories?post=12055"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabriciolima.net\/blog\/wp-json\/wp\/v2\/tags?post=12055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}