AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 340992
Accepted
Martin Karouš
Martin Karouš
Asked: 2024-07-17 05:00:17 +0800 CST2024-07-17 05:00:17 +0800 CST 2024-07-17 05:00:17 +0800 CST

Alta utilização de CPU em uma instância ociosa do SQL Server sem tráfego de usuário [duplicado]

  • 772
Essa pergunta já tem resposta aqui :
Armazenamento de consultas quebrado (1 resposta)
Fechado há 3 horas .

Temos um SQL Server 2022 CU13 Enterprise em uma VM Windows 2022 com 8 vCPU. O processo sqlserver.exe mostra uma alta utilização da CPU entre 10-15%, mesmo quando não há carga gerada pelo usuário (o que significa que não há conexão do usuário no momento, até mesmo o SQL Server Agent é interrompido para eliminar toda carga que não seja do sistema) em o servidor. O tipo de espera dominante é SOS_SCHEDULER_YELD nesse tempo ocioso.

Essa atividade do servidor também bloqueia a interrupção do serviço SQL Server. Uma tentativa de interromper o serviço resulta em uma espera interminável e o processo de serviço do Windows precisa ser encerrado para "parar". Após a reinicialização, a utilização funciona perfeitamente por algum tempo (o servidor inativo tem */- 0 utilização de CPU), mas após algum período de tempo (algumas horas ou alguns dias no máximo) com a carga do usuário em execução, o problema volta novamente . Significa que a utilização é maior do que deveria ser com a carga do usuário gerada e, novamente, após a carga ser interrompida (sem conexões do usuário), a utilização permanece alta conforme mencionado acima...

Não há mensagens suspeitas no log de erros, na sessão de integridade do XE, no log de eventos do Windows...

Aqui está a visualização do Activity Monitor no servidor durante o período ocioso descrito acima: insira a descrição da imagem aqui

Após alguma investigação, provavelmente identifiquei o SPID, que causa essa utilização. Parece ser um SPID do sistema (SPID 37 no momento da investigação) e consome cerca de 10 segundos de tempo de CPU em um período de 10 segundos (veja a saída da Consulta 4 abaixo). O database_id do SPID parece estar mudando entre o mestre (database_id = 1) e um dos bancos de dados do usuário (database_id = 10). Apenas os IDs de bancos de dados 1 e 10 parecem estar envolvidos nesta atividade SPID. O SPID também está gerando uma alocação cada vez maior no tempdb (veja a saída da Consulta 3 abaixo).

Aqui está a saída do sys.dm_exec_request ao mesmo tempo em que a imagem do Activity Monitor acima foi tirada (o spid problemático é o 37): Consulta 1

Aqui está a saída de sp_WhoIsActive ao mesmo tempo: Consulta 2

Aqui está um cálculo do tempo de CPU consumido para o SPID durante o período de 10 segundos: Consulta 3

Pelo que entendi, parece ser uma atividade do Service Broker. No entanto, não há Service Broker habilitado no banco de dados mestre nem no banco de dados do usuário. Não usamos ativamente o Service Broker em nossos bancos de dados. Não tenho ideia do que possa ser essa atividade do corretor e com que atividade do sistema ela pode estar conectada. Não há nenhum recurso "incomum" usado no servidor ou no banco de dados do usuário, apenas um "conjunto básico de recursos comuns", o único "recurso incomum" é o TDE habilitado.

Alguma idéia de como posso investigar melhor a causa raiz desse problema (do que se trata essa atividade do corretor) e como posso me livrar dele?

sql-server
  • 1 1 respostas
  • 64 Views

1 respostas

  • Voted
  1. Best Answer
    Martin Karouš
    2024-07-30T21:04:21+08:002024-07-30T21:04:21+08:00

    Eu descobri qual é a causa raiz do comportamento declarado acima após algumas tentativas no final. Havia o Query Store habilitado no banco de dados "problemático" e a carga gerada pelo usuário consiste principalmente em consultas ad-hoc. Isso resultou na situação em que o Query Store foi preenchido rapidamente e o "procedimento de limpeza baseado em tamanho" foi acionado. Essa limpeza baseada no tamanho parece ser a fonte da utilização da CPU.

    A incapacidade de desligar "pacificamente" o serviço SQL Server parece ser causada pelo fato de o armazenamento de consultas estar aguardando para liberar alguns dados no disco (isso pode ser evitado usando o sinalizador de rastreamento 7745).

    De qualquer forma isso abre uma nova questão relacionada ao comportamento do Query Store ( Broken Query Store )

    • 0

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve