.NET FRAMEWORK RUNTIME FATAL ERROR

Olá Pessoal!

Faz pouco tempo que passei por um problema em uma implementação e tive que recorrer ao suporte do produto junto a Microsoft, vou compartilhar esse caso com vocês.

Durante o processo de teste e ajuste de hardware após a implantação de um ambiente SQL Server 2017 utilizando Always On Availability Groups com dois nós, foi observado failovers ocorrendo de forma inesperada entre os nós. Ao analisar o error log do SQL Server, a seguinte mensagem foi apresentada:

Acontece que o erro gerado causou crash na instância do SQL Server e o failover automático foi acionado imediatamente, por isso da transição das roles entre os nós inesperadamente. Apesar de saber o motivo do failover, ainda não sabíamos por que um erro no componente .NET Framework runtime causou uma reinicialização no serviço do SQL Server e se poderia ocorrer novamente, impactando no ambiente que iria para produção.

Optei por abrir um chamado na Microsoft para apoio na identificação da causa raiz do problema, buscando evitar dessa forma que o mesmo ocorra novamente. Após a solicitação inicial do chamado, o analista responsável pelo ticket solicitou uma série de informações complementares para esclarecer melhor o ocorrido, assim como, entender em quais circunstâncias o Stack Dump foi gerado.

Após verificar os logs do SQL Server e o Dump gerado, o analista percebeu um detalhe relacionado a configuração de hardware. No dia anterior ao ocorrido, foi feito um upgrade de hardware nos hosts com as instâncias do SQL Server, tanto o processador quanto a memória foram alterados utilizando o VMware Hot-Add. Veja abaixo:

Processador e Memória antes

Processador e Memória depois

Foi concluído que durante o evento do crash, o SQL Server detectou 16 sockets com 1 core per socket e 1 logical processor per socket e com um total de 16 logical processors, além de 128GB Ram. A equipe de suporte apontou que já observou alguns casos com esse cenário, no qual o SQL Server falha ao detectar desalinhamento com os processor cores. O crash dump gerado após a falha informa que o erro ocorreu devido a Access Violation. Access Violation conceitualmente ocorre quando um programa executa uma ação em um endereço de memória, no entanto, essa ação não é permitida. A página de memória será configurada com a opção de proteção de memória adequada durante a alocação. Se um aplicativo acessar um endereço de memória que não esteja alinhado com a proteção de página para essa memória, será lançada uma exceção de Access Violation.

Realmente esse caso foi uma exceção e não voltou a ocorrer, atualmente o ambiente está totalmente estável.

Até a próxima!

Anúncios

4 pensamentos sobre “.NET FRAMEWORK RUNTIME FATAL ERROR

  1. É importante compartilhar esse tipo de situação pra que outras pessoas que estejam migrando não fiquem sem rumo caso ocorra um incidente destes. Muito Grato!

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s