Estamos percebendo um padrão interessante de HADR_SYNC_COMMIT
espera em nosso ambiente. Temos uma réplica de três; uma primária, uma secundária de sincronização e uma secundária assíncrona em um datacenter e acabamos de adicionar mais três réplicas ASYNC em outro datacenter (a aproximadamente 2.400 milhas de distância).
Desde então, começamos a notar um enorme aumento nas HADR_SYNC_COMMIT
esperas. Quando olhamos para as sessões ativas, vemos várias COMMIT TRANSACTION
consultas aguardando a réplica SYNC
A partir da captura de tela, podemos ver claramente que há um atraso no HADR_SYNC_COMMIT
dia 29 de junho e, eventualmente, eliminamos 'duas' das três réplicas assíncronas no datacenter remoto em algum momento do meio-dia de 1º de julho. Isso diminuiu consideravelmente o tempo de espera.
O que verificamos até agora - fila de envio de log, fila de refazer, último tempo de proteção e último tempo de confirmação nas réplicas remotas. Temos rajadas contínuas de pequenas transações durante o horário comercial e, portanto, as filas de envio são muito pequenas em um determinado carimbo de data / hora (entre 60 KB e 1 MB).
As réplicas remotas estão quase sincronizadas, há muito pouca diferença entre o último tempo de confirmação e o último tempo de proteção para qualquer lsn individual nas réplicas.
O canal de rede é 10G e modificamos o tamanho do buffer de transmissão de 256 megs para 2 GB, isso foi feito sob a suposição de que a rede estava descartando pacotes e os transmitindo novamente; de qualquer maneira que não pareceu ajudar muito.
Então, eu estou querendo saber o que as réplicas ASYNC têm a ver com HADR_SYNC_COMMIT
esperas? A réplica SYNC não deve depender sozinha desse tipo de espera, o que estou perdendo aqui?