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 / 284934
Accepted
Frederik Vanderhaegen
Frederik Vanderhaegen
Asked: 2021-02-09 05:36:44 +0800 CST2021-02-09 05:36:44 +0800 CST 2021-02-09 05:36:44 +0800 CST

Grupo de Disponibilidade do SQL Server LeaseTimeout e E/S lenta

  • 772

Nossos 5 bancos de dados principais são executados em um SQL Server 2016 SP2 Enterprise físico (2 * 8 núcleos, 512 GB, Hypertreading) em um único Grupo de Disponibilidade e, às vezes, recebemos erros de que o tempo limite de concessão expirou. Meu entendimento é que, se a concessão não puder ser atualizada, haverá um problema em todo o sistema.

Quando verifico a saída de sp_server_diagnostics(arquivos *SQLDIAG*.xel), na pasta de log da réplica primária, na hora do tempo limite sempre encontro operações de E/S pendentes.

<ioSubsystem ioLatchTimeouts="0" intervalLongIos="0" totalLongIos="1">
<longestPendingRequests>
<pendingRequest duration="26566" filePath="\?\F:\SqlLogs\db1.ldf" offset="80824832" handle= "0x8d10" /> <pendingRequest duration="1987" filePath="\?\O:\SqlLogs\db2.ldf" offset="3880740352" handle="0x1330" /> <pendingRequest duration="1093" filePath="\ ?\O:\SqlLogs\db3.ldf" offset="288143360" handle="0x132c" /> <pendingRequest duration="974" filePath="\?\O:\SqlLogs\db3.ldf" offset="288145408" handle="0x132c" /> <pendingRequest duration="937" filePath="\?\O:\SqlLogs\db3.ldf"offset="288146944" handle="0x132c" />
</longestPendingRequests>
</ioSubsystem>

Isto é o que encontro no clusterlog da réplica primária:

WARN [RES] Grupo de Disponibilidade do SQL Server: [hadrag] Falha ao recuperar a coluna de dados. Código de retorno -1
ERR [RES] Grupo de Disponibilidade do SQL Server: [hadrag] Falha detectada, pulsação de diagnóstico perdida
ERR [RES] Grupo de Disponibilidade do SQL Server <AG_Name>: [hadrag] O Grupo de Disponibilidade não está íntegro com HealthCheckTimeout e FailureConditionLevel
ERR [ RES] Grupo de Disponibilidade do SQL Server <AG_Name>: [hadrag] Resource Alive resultado 0.
ERR [RES] Grupo de Disponibilidade do SQL Server: [hadrag] Falha detectada, pulsação de diagnóstico perdida
ERR [RES] Grupo de Disponibilidade do SQL Server <AG_Name>: [ hadrag] O Grupo de Disponibilidade não está íntegro com HealthCheckTimeout e FailureConditionLevel fornecidos
ERR [RES] Grupo de Disponibilidade do SQL Server <AG_Name>: [hadrag] Resource Alive resultado 0.
WARN [RHS] O recurso AG_Name IsAlive indicou falha.

Estes são os erros no log de erros do SQL Server:

Erro: 19407, gravidade: 16, estado: 1
grupo de disponibilidade de hospedagem do SQL Server 'AG_Name' não recebeu um sinal de evento de processo do cluster de failover do Windows Server dentro do período de tempo limite de concessão.

Erro: 19407, gravidade: 16, estado: 1
A concessão entre o grupo de disponibilidade 'AG_Name' e o cluster de failover do Windows Server expirou. Ocorreu um problema de conectividade entre a instância do SQL Server e o cluster de failover do Windows Server. Para determinar se o grupo de disponibilidade está fazendo failover corretamente, verifique o recurso de grupo de disponibilidade correspondente no cluster de failover do Windows Server.

Always On: a réplica local do grupo de disponibilidade 'AG_Name' está ficando offline porque a concessão expirou ou a renovação da concessão falhou. Esta é apenas uma mensagem informativa. Não é necessária nenhuma ação do usuário.

Esta é a saída de SELECT @@version:

Microsoft SQL Server 2016 (SP2-CU15) (KB4577775) - 13.0.5850.14 (X64) 17 de setembro de 2020 22:12:45 Copyright (c) Microsoft Corporation Enterprise Edition: licenciamento baseado em núcleo (64 bits) no Windows Server 2012 R2 Padrão 6.3 (Build 9600: )

Em nosso monitoramento não há sinais de alto uso de CPU. Além disso, nenhum despejo de memória é criado no momento do problema.

Como resultado desse tempo limite, o serviço WSFC reinicia o recurso de cluster 'AG_Name'. Depois que este recurso é reiniciado, tudo funciona perfeitamente novamente.
O que não entendo é: como as solicitações de IO lentas podem causar um tempo limite de concessão? Muitas solicitações de E/S pendentes podem causar um tempo limite de concessão?

availability-groups sql-server-2016
  • 2 2 respostas
  • 1412 Views

2 respostas

  • Voted
  1. Josh Darnell
    2021-02-09T07:29:46+08:002021-02-09T07:29:46+08:00

    como as solicitações de IO lentas podem causar um tempo limite de concessão? Muitas solicitações de E/S pendentes podem causar um tempo limite de concessão?

    Não, solicitações de E/S lentas não podem causar um tempo limite de concessão diretamente.

    No entanto, se o servidor estiver completamente sobrecarregado (CPU em 100%), isso pode causar solicitações de E/S pendentes e tempos limite de concessão. O tempo limite de concessão padrão é de 20 segundos e sua E/S pendente é de 26 segundos. CPU alta ou algum outro problema no nível do servidor / SO é mais provável que seja o problema aqui.

    Outra causa é que o SQL Server encontrou um erro grave e está gerando arquivos de despejo (o que faz com que o processo seja pausado, potencialmente longo o suficiente para o WSFC pensar que a concessão expirou).

    Veja a documentação para mais algumas possibilidades:

    SO não responde, memória virtual baixa, paginação do conjunto de trabalho, geração de despejo, CPU atrelada, WSFC inativo (perda de quorum)

    Você deve revisar o log de erros do SQL Server para ver se há despejos sendo criados. Se você tiver monitoramento desde o momento desses incidentes, também poderá verificar se a CPU está no limite.

    • 2
  2. Best Answer
    Frederik Vanderhaegen
    2021-02-11T01:46:32+08:002021-02-11T01:46:32+08:00

    Depois de verificar as estatísticas de espera em nossa ferramenta de monitoramento, notei que no momento do problema havia dois tipos de espera principais com um tempo de espera de 526000 ms/s, PREEMPTIVE_SP_SERVER_DIAGNOSTICS e PREEMPTIVE_HADR_LEASE_MECHANISM .

    Se eu interpretar isso corretamente, a parte PREEMPTIVE significa que um thread fora do SQLOS está executando os comandos. Neste caso, executando SP_SERVER_DIAGNOSTICS e renovando a concessão.
    O alto tempo de espera mostra que o SQL Server estava aguardando a conclusão desses threads. Então eu acho que isso foi um problema do sistema operacional que não estava respondendo.

    Nosso administrador do sistema também mencionou que no momento do tempo limite havia vários avisos com o event-id 153 no log do sistema:

    Device\MPIODisk0 está atualmente em um estado degradado. Um ou mais caminhos falharam, embora o processo esteja concluído.

    Portanto, minha conclusão é devido aos problemas de disco, o sistema operacional não estava respondendo dentro das configurações de tempo limite definidas e fez com que o recurso de cluster fosse reiniciado.

    • 1

relate perguntas

  • AlwaysOn AG, DTC com failover

  • Bancos de dados fora do grupo de disponibilidade AlwaysOn travados no status RESTORING [fechado]

  • Os bloqueios em bancos de dados secundários somente leitura se propagam para o banco de dados de leitura/gravação

  • Nó preferencial para leitura no Grupo de Disponibilidade em uma configuração multisite

  • Como determinar se a configuração de alta disponibilidade está funcionando corretamente

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