O serviço de compartilhamento de código GitHub, de propriedade da Microsoft, está fazendo melhorias em seu cluster de banco de dados “MySQL1” após repetidas interrupções na semana passada, afetando a maioria de seus 73 milhões de usuários.
O GitHub admitiu que seu serviço não aguentou para os desenvolvedores na semana passada devido a problemas que afetam a “saúde do nosso banco de dados”, resultando em uma experiência degradada para os desenvolvedores.
“Sabemos que isso afeta a produtividade de muitos dos nossos clientes e levamos isso muito a sério”, disse o vice-presidente sênior de engenharia do GitHub, Keith Ballinger, em um post no blog.
“O tema subjacente de nossos problemas nas últimas semanas foi devido à contenção de recursos em nosso cluster mysql1, que impactou o desempenho de um grande número de nossos serviços e recursos durante os períodos de pico de carga”, explicou ele.
Repetidas interrupções do GitHub na semana passada geraram inúmeras reclamações nas mídias sociais. Os relatórios de incidentes no downdetector.com aumentaram em 23 de março. A maioria deles diz respeito a solicitações de push e pull falhando em projetos.
Ballinger destaca quatro incidentes de várias horas em 16, 17, 22 e 23 de março que duraram entre duas e cinco horas cada.
GitHub promete resolver falhas de interrupções
As interrupções do GitHub são um problema para os desenvolvedores devido ao software hospedado no serviço. O GitHub também é importante para manter os aplicativos corporativos em execução. A Microsoft adquiriu o GitHub por US$ 7,5 bilhões em 2018 como parte de sua mudança para o Linux no Windows, a nuvem do Azure e, mais amplamente, o desenvolvimento de software de código aberto .
Ballinger explica que a interrupção de 16 de março às 14:09 UTC durou 5 horas e 36 minutos. O banco de dados MySQL1 do GitHub estava acima da capacidade, o que causou interrupções que afetaram as operações do git, webhooks, pull requests, solicitações de API, problemas, GitHub Packages, GitHub Codespaces, GitHub Actions e GitHub Pages services.
“O incidente parecia estar relacionado ao pico de carga combinado com um desempenho de consulta ruim para conjuntos específicos de circunstâncias”, observa ele.
Opções falharam
O GitHub tem opções de failover disponíveis, mas elas também falharam. Em 17 de março, uma interrupção começou às 13h46 UTC e durou duas horas e 28 minutos.
Não conseguimos identificar e resolver os problemas de desempenho de consulta antes desse pico e decidimos fazer o failover proativamente antes que o problema aumentasse.
Infelizmente, isso causou um novo padrão de carregamento que introduziu problemas de conectividade no novo primário com failover e nos aplicativos foram mais uma vez incapazes de se conectar ao mysql1 enquanto trabalhávamos para redefinir essas conexões, observa ele.
Em seguida, mais interrupções ocorreram em 22 e 23 de março, ambas com duração de pouco menos de três horas.
“Neste terceiro incidente, habilitamos o perfil de memória em nosso proxy de banco de dados para observar mais de perto as características de desempenho durante o pico de carga. Ao mesmo tempo, as conexões do cliente com o mysql1 começaram a falhar e precisávamos executar novamente um failover primário para se recuperar”, diz Ballinger sobre o incidente de 22 de março.
Então, em 23 de março, ele estrangulou o tráfego de webhook. Assim, está usando esse controle para mitigar problemas futuros quando seu banco de dados não puder lidar com cargas de pico.
Pedido de desculpas
A empresa de propriedade da Microsoft está tomando medidas para evitar que seu cluster de banco de dados fique sobrecarregado com o tráfego em seus serviços. Ele está realizando uma auditoria de carga padronizada. Assim, lança várias correções de desempenho para o banco de dados afetado. Move o tráfego para outros bancos de dados e tentando reduzir os tempos de failover.
Pedimos sinceras desculpas pelos impactos negativos que essas interrupções causaram. Entendemos o impacto que esses tipos de interrupções têm nos clientes que confiam em nós para realizar seu trabalho todos os dias. Estamos comprometidos com os esforços para garantir que possamos lidar com interrupções e minimizar o tempo de inatividade, disse Ballinger.
O GitHub divulgará mais detalhes em seu relatório de disponibilidade de março dentro de algumas semanas.