Incident Post Mortem: 25 a 26 de junho de 2019

Mark Hudnall Seguir Jul 17 · 3 min leitura

Durante a semana de 24 de junho, a Coinbase.com teve dois períodos de serviço degradado. Em 25 de junho, por um período de 30 minutos, a maioria dos clientes recebeu mensagens de erro que os impediam de realizar compras, vendas e negociações. Em 26 de junho, por um período de 32 minutos, cerca de um terço dos clientes experimentou mensagens de erro no site e em aplicativos para dispositivos móveis.

Abaixo está uma descrição detalhada da causa, bem como as mudanças que implementamos para evitar qualquer degradação de serviço similar.

25 de junho

De 15:16 PT a 15:46 PT (22: 16–22: 46 UTC), a funcionalidade de compra / venda / troca no Coinbase.com foi severamente degradada com uma taxa de erro de 97%. Em outras palavras, 97% das solicitações de compra / venda / troca receberam uma resposta de erro.

Essa grave degradação do serviço foi causada por um failover automático de um cluster MongoDB que fornece lógica de prevenção contra fraudes como parte de uma manutenção planejada. Os failovers de cluster para manutenção programada geralmente são instantâneos e têm um impacto mínimo no cliente. O failover desse cluster específico durou 25 minutos devido ao seu tamanho e configuração de replicação. Durante esse tempo, consultas e comandos para o cluster não puderam ser concluídos. Como o cluster é usado durante os ciclos de solicitação / resposta para enviar compras, vendas e negociações, as solicitações para esses pontos de extremidade tiveram erro.

No momento, estamos reformulando a funcionalidade de negociação para mover o uso desse cluster para fora do caminho da solicitação. Também estamos atualizando a configuração para garantir que os failovers sejam instantâneos no futuro. Garantimos que os failovers para esse cluster só possam ser iniciados durante um tempo de inatividade raro e programado, quando não haverá impacto nos clientes.

26 de junho

De 13:37 PT a 14:09 PT (20: 37–21: 09 UTC), a Coinbase.com sofreu taxas de erro sustentadas em todos os endpoints. As taxas de erro atingiram cerca de 35% durante a duração do incidente.

Essa degradação moderada do serviço foi causada pelo aumento contínuo da latência de consulta em um cluster do MongoDB que armazena dados da conta do usuário. Vários fatores contribuíram para aumentar a latência da consulta e degradar o serviço:

  1. Antes de o incidente começar, um trabalho em segundo plano executava uma agregação para um grande número de contas, causando leituras excessivas no cache e despejos de cache para o cache do mecanismo de armazenamento do cluster.
  2. Logo depois, um grande número de alertas de preços em tempo real foi acionado, causando um aumento significativo na taxa de transferência de consultas para esse cluster.
  3. A maior taxa de transferência de consultas, combinada com os despejos anteriores de cache, causou pressão adicional no cache e resultou em enfileiramento de consulta e aumento na latência da consulta. Estas são conclusões iniciais; em colaboração com o MongoDB, nossa investigação está em andamento.
  4. Devido ao aumento da latência da consulta durante o ciclo de solicitação / resposta, os funcionários da Web ficaram saturados, servindo HTTP 502s.

Atividade do cache do mecanismo de armazenamento para o cluster afetado

O incidente foi resolvido quando falhamos manualmente o cluster afetado em instâncias com mais memória. Desde o incidente, fizemos o seguinte:

  • Nós auditamos o tamanho do conjunto de trabalho em todos os clusters, redimensionando instâncias e / ou reduzindo o tamanho do conjunto de trabalho conforme necessário.
  • Removemos o trabalho em segundo plano e estamos realizando uma auditoria de consultas semelhantes, movendo-as para nós analíticos.
  • Ajustamos alguns endpoints de alto rendimento que são mais atingidos durante os alertas de preço.
  • Estamos continuando o trabalho contínuo para reduzir a carga no MongoDB por meio de armazenamento em cache e leitura de armazenamentos de dados secundários que podem ser dimensionados horizontalmente.

Levamos muito a sério o tempo de atividade e estamos trabalhando arduamente para apoiar os milhões de clientes que escolhem a Coinbase para gerenciar sua criptomoeda. Se você estiver interessado em resolver desafios de dimensionamento como os apresentados aqui, venha trabalhar conosco .

Salvo indicação em contrário, todas as imagens fornecidas neste documento são da Coinbase.