Mensagens de SQL Errorlog Constant FlushCache
Um servidor que faz parte de um grupo de disponibilidade sempre disponível (BAG) do SQL 2017 Observei um aumento dessas mensagens. Eu entendo que essas são mensagens que aparecem no log como padrão desde 2012 (sinalizador de rastreamento antes de 2012), mas nos últimos 2 dias elas estão aparecendo a cada poucos minutos, não há backups em execução ou trabalhos de manutenção nesses momentos
O servidor está atuando como o parceiro secundário de failover não legível e o servidor primário não está exibindo o mesmo comportamento.
09/04/2020 10: 52: 24, spid82s, Desconhecido, FlushCache: limpou 2303 bufs com 1881 gravações em 81090 ms (evitou 11 novos bufs sujos) para db 7: 0 09/04/2020 10:52:07, spid52s, desconhecido, último destino pendente: 2 avgWriteLatency 86 09/04/2020 10: 52: 07, spid52s, desconhecido, média de gravações por segundo: 17,70 gravações / s taxa de transferência média: 0,19 MB / s saturação de E / S: 13073 alternâncias de contexto 15434
Também há um aviso no log de erros do sistema sobre o problema do disco; segundos depois disso, o grupo de disponibilidade falhou desde que as mensagens de FlushCache aumentaram.
Alguém experimentou algo semelhante ou tem algum conselho, meu administrador de sistema também está analisando o SAN e o VMware.
Será que um pensamento repentino poderia ser causado por atividades de autocrescimento?
Respostas
Mude para pontos de verificação indiretos (geralmente, defina o tempo de intervalo de recuperação para 60 segundos, pelo menos para bancos de dados de usuário).
Eu escrevi sobre esse problema aqui e aqui , e você deve ler essas postagens na íntegra antes de fazer a mudança, embora seja praticamente um IMHO óbvio.
O impacto em nosso meio ambiente foi drástico e imediato, e foi simples provar que a mudança foi a responsável. Cada banco de dados com o sintoma passou de pontos de verificação de 30-60 segundos, e logs de erros cheios dessas mensagens, para pontos de verificação de menos de um segundo e sem mais entradas de log de erros.
Provavelmente, existem técnicas de mitigação para sua carga de trabalho também, por exemplo, veja este post de Itzik Ben-Gan, mas tornar os pontos de verificação mais eficientes é um caminho mais rápido e fácil. No entanto, o pessoal de armazenamento e VM não está fora do gancho; há definitivamente um problema de disco que eles precisam resolver (mas não concordo que essas mensagens do FlushCache tenham sido a causa raiz de qualquer failover; mais provavelmente, são apenas uma vítima / sintoma diferente).
Verifique com seu administrador de armazenamento se há alguma atualização de firmware recentemente ou se o subsistema de armazenamento precisa de uma atualização de firmware mais recente. Já vi essas mensagens no ambiente SQL várias vezes e uma coisa que você pode observar é a configuração da camada de armazenamento (essa é a causa comum). Além disso, uma coisa é monitorar o desempenho do disco usando o perfmon. contadores de disco que você precisa se concentrar em: avg disk sec/Read, avg disk sec/Write, avg disk sec/Transfer.
Você pode verificar o seguinte link que você pode olhar abaixo:
- Como funciona: quando a mensagem FlushCache é adicionada ao log de erros do SQL Server?
- https://techcommunity.microsoft.com/t5/sql-server-support/how-it-works-when-is-the-flushcache-message-added-to-sql-server/ba-p/317038
Quando digo camada de armazenamento, verifique o seguinte: HBA / CNA, cabo de fibra, switch FC, portas, controlador de armazenamento, software (drivers MPIO) - todas as suas configurações
Finalmente, eu recomendo sempre verificar e investigar mensagens de avisos / erros em seus logs de eventos. NÃO deixe isso passar porque esse tipo de mensagem tem consequências de longo prazo.